根据条件创建唯一标识符 - 标识序列

时间:2017-10-23 20:43:07

标签: r string function loops

我有一个变量x。我想获得一个变量z,根据这些条件,它需要一个唯一的标识符(这里是一个字母,但它可以是一个数字):

  1. 如果之前的观察值为零且当前为1,则它采用唯一标识符
  2. 如果当前和过去的值为1,则与先前观察的标识符相同,
  3. 如果当前观察结果为零,则为NA,
  4. (= 1。)如果之前的观察值为零且当前为1,则为新的唯一标识符:

    x    z 
    0    NA
    1    A
    1    A
    1    A
    0    NA
    1    B
    1    B
    0    NA
    
  5. 任何人都可能知道如何做到这一点?

2 个答案:

答案 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