在 R 中,根据另一个变量的段分配数字变量?
In R, assign numeric variable according to segments of another variable?
一些简单的示例数据:
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,[=22= 的第一个块] 得到 3,'A' 的下一个块得到 4。我试过:
test <- factor(test, levels = unique(test))
as.integer(test)
但这会为 'A' 的第二个块分配一个 2。我怎样才能让它为每个块分配唯一的序列号?实际数据是药物组合,我需要指定的数字变量以 1
开头
我猜你需要rle
> with(rle(test), rep(seq_along(lengths), lengths))
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4
一些简单的示例数据:
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,[=22= 的第一个块] 得到 3,'A' 的下一个块得到 4。我试过:
test <- factor(test, levels = unique(test))
as.integer(test)
但这会为 'A' 的第二个块分配一个 2。我怎样才能让它为每个块分配唯一的序列号?实际数据是药物组合,我需要指定的数字变量以 1
开头我猜你需要rle
> with(rle(test), rep(seq_along(lengths), lengths))
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4