【发布时间】:2016-08-11 23:22:09
【问题描述】:
包含一些算术序列 c(4,5,6) 和 c(10,11) 的样本数据。
df <- data.frame(x = c(2, 4, 5, 6, 8, 10, 11))
我想要的是一个计算每个序列长度的新列,例如
> df
x cnt
1 2 1
2 4 1
3 5 2
4 6 3
5 8 1
6 10 1
7 11 2
首先分配df$cnt[1] = 1,然后为第二行及以后增加计数会很简单,或者重置为1,具体取决于df$x中的连续数字是否符合特定条件(此处为x[i] - x[i-1] == 1 )。我只是不确定循环是进入R 的方式——我还需要处理组。
我可以创建新列来检查它是否在一个序列中。从那里,我可能可以使用rle 来计算运行长度并生成cnt 列(不知道如何使用NA)。
> df %>% mutate(check=(x-lag(x)==1))
x check
1 2 NA
2 4 FALSE
3 5 TRUE
4 6 TRUE
5 8 FALSE
6 10 FALSE
7 11 TRUE
这是要走的路吗?请通过dplyr 或data.table 提出解决方案?
【问题讨论】:
标签: r data.table dplyr