Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据条件创建唯一标识符-标识序列_R_String_Function_Loops - Fatal编程技术网

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

R 根据条件创建唯一标识符-标识序列,r,string,function,loops,R,String,Function,Loops,我有一个变量x。我希望获得一个变量z,以便根据以下条件获取唯一标识符(此处为字母,但可以是数字): 如果之前的观测值为零,当前为一,则需要唯一标识符 如果当前值和过去值为一,则为先前观测的相同标识符 如果当前观测值为零,则值NA (=1.)如果之前的观测值为零,电流为一,则为新的唯一标识符,以此类推: x z 0 NA 1 A 1 A 1 A 0 NA 1 B 1 B 0 NA 任何人都可能有办法做到这一点 library(data.t

我有一个变量x。我希望获得一个变量z,以便根据以下条件获取唯一标识符(此处为字母,但可以是数字):

  • 如果之前的观测值为零,当前为一,则需要唯一标识符
  • 如果当前值和过去值为一,则为先前观测的相同标识符
  • 如果当前观测值为零,则值NA
  • (=1.)如果之前的观测值为零,电流为一,则为新的唯一标识符,以此类推:

    x    z 
    0    NA
    1    A
    1    A
    1    A
    0    NA
    1    B
    1    B
    0    NA
    
  • 任何人都可能有办法做到这一点

    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
    
    如果愿意,您可以使用
    因子
    重新标记它们。这假设您的输入总是0或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
    

    如果愿意,您可以使用
    因子
    重新标记它们。这假设您的输入总是0或1。

    正是我要找的!非常感谢。正是我想要的!非常感谢。几乎重复了Try:
    z几乎重复了Try:
    z
    
    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