【发布时间】:2021-01-20 22:18:46
【问题描述】:
一些简单的示例数据:
test <- c(rep('B', 10), rep('A', 7), rep('C', 10), rep('A', 3))
#1] “B” “B” “B” “B” “B” “B” “B” “B” “B” “B” “A” “A” “A” “A” “A” ""A""A""C""C""C""C""C""C""C""C""C""C""A""A""A"
我想给它分配一个数字变量,其中“B”的第一个块得到 1,“A”的第一个块得到 2,“C”的第一个块得到 3,下一个'A' 块得到 4。我试过了:
test <- factor(test, levels = unique(test))
as.integer(test)
但这会将“A”的第二个块分配为 2。我怎样才能让它为每个块分配唯一的连续编号?实际数据是药物组合,我需要分配的数字变量以 1 开头
【问题讨论】:
-
cumsum(c(1, test[-length(test)] != test[-1]))
标签: r type-conversion factors