0

如何在它们按顺序排列时创建一个范围的数据 ID,例如:我有这个

ID<-c(1,2,3,4,8,9,10,14,18,19,20,28,33,34,35,36,40,42,43,44,55,56)

我希望它计算或制作一系列序列中的 ID

我更喜欢的输出是这样的

RANGE 1:4, 8:10, 14, 18:20, 28, 33:36, 40, 42:44, 55:56
NEW ID 1     2    3     4    5     6    7    8     9
4

1 回答 1

4

使用splitwithdiff分组ID

result <- split(ID, cumsum(c(1, diff(ID) > 1)))
result
#$`1`
#[1] 1 2 3 4

#$`2`
#[1]  8  9 10

#$`3`
#[1] 14

#$`4`
#[1] 18 19 20

#$`5`
#[1] 28

#$`6`
#[1] 33 34 35 36
#...
#...

如果您需要输出作为数据框,您可以使用stack(result)它。

于 2021-02-25T09:15:11.250 回答