【发布时间】:2021-05-08 21:02:45
【问题描述】:
我有一个带有结果值的数据集,我想知道每个长度出现的次数。 更具体地说,我想找出有多少 id 的序列从 1:2、1:3、1:4 等开始运行。 只有从 1 开始的序列是有意义的。
在这个例子中,id1 有一个从 1:3 开始的“完整”序列(因为数字 4 缺失),id2 有一个从 1:5 开始的序列,id3 有一个从 1:6 开始的序列,id4不计算在内,因为它不是以值 1 开始的,并且 id 5 的序列从 1:3 开始运行。
所以我们最终得到两个序列,直到 3,一个到 5,一个到 6。
有没有一种巧妙的方法来计算这个,而无需使用低效的循环?
示例数据:
data <- data.table( id = c(1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5),
value = c(1,2,3,5,1,2,3,4,5,10,11,1,2,3,4,5,6,2,3,4,5,6,7,8,1,2,3,7))
> data
id value
1: 1 1
2: 1 2
3: 1 3
4: 1 5
5: 2 1
6: 2 2
7: 2 3
8: 2 4
9: 2 5
10: 2 10
11: 2 11
12: 3 1
13: 3 2
14: 3 3
15: 3 4
16: 3 5
17: 3 6
18: 4 2
19: 4 3
20: 4 4
21: 4 5
22: 4 6
23: 4 7
24: 4 8
25: 5 1
26: 5 2
27: 5 3
28: 5 7
id value
【问题讨论】:
标签: r count data.table grouping