如何衡量y的长度?

时间:2014-12-07 19:12:51

标签: r

我是R的新手并面临一些确定y长度的问题,直到y = 1发生。 给出样本:

         id<-c(1, 1, 1, 1, 1, 1, 1, 2, 2,2,2,2,2,2) 
         y<-c(0, 0, 0, 0, 1, 0, 1, 1, 0,0,0,0,0,1) 
         time<-c(1, 2, 3,4, 5, 6, 7, 1, 2,3,4,5,6,7)

数据&LT; -data.frame(ID,Y,时间)

        id  y   time    desired lenght
         1  0   1            1
         1  0   2            2
         1  0   3            3
         1  0   4            4
         1  1   5            1
         1  0   6            2
         1  1   7            1
         2  1   1            1
         2  0   2            1
         2  0   3            2
         2  0   4            3
         2  0   5            4
         2  0   6            5
         2  1   7            1

1 个答案:

答案 0 :(得分:3)

y=1的长度应该是1而不是0,这似乎有点奇怪,但如果这是你想要的,你可以用

来做
data$desired <- unlist(with(rle(data$y), 
    Map(function(l,v) 
        if(v==1) rep(1, l) else seq.int(l),
    lengths, values))
)
data

#    id y time desired
# 1   1 1    1       1
# 2   1 0    2       1
# 3   1 0    3       2
# 4   1 0    4       3
# 5   1 1    5       1
# 6   1 0    6       1
# 7   1 1    7       1
# 8   2 1    1       1
# 9   2 0    2       1
# 10  2 0    3       2
# 11  2 0    4       3
# 12  2 0    5       4
# 13  2 0    6       5
# 14  2 1    7       1