我有一个变量x。我想获得一个变量z,根据这些条件,它需要一个唯一的标识符(这里是一个字母,但它可以是一个数字):
(= 1。)如果之前的观察值为零且当前为1,则为新的唯一标识符:
x z
0 NA
1 A
1 A
1 A
0 NA
1 B
1 B
0 NA
任何人都可能知道如何做到这一点?
答案 0 :(得分:1)
library(data.table)
x = c(0, 1, 1, 1, 0, 1, 1, 0)
ifelse(x == 0, NA, rleid(x))
# [1] NA 2 2 2 NA 4 4 NA
如果您愿意,可以重新标记它们,例如factor
。这假设您的输入始终为0或1。
答案 1 :(得分:1)
x = c(0, 1, 1, 1, 0, 1, 1, 0)
replace(cumsum(x == 0), x == 0, NA)
#[1] NA 1 1 1 NA 2 2 NA