R 使用data.table进行顺序分组
我将以下数据集设置为data.table(dt): 我想要这个:R 使用data.table进行顺序分组,r,data.table,R,Data.table,我将以下数据集设置为data.table(dt): 我想要这个: wea start.point end.point 1: cloudy 1 8 2: sunny 9 12 3: rainy 13 16 4: sunny 17 18 5: cloudy 19 23 我试着运行以下程序,但没有成功 dt[, .(start.point =
wea start.point end.point
1: cloudy 1 8
2: sunny 9 12
3: rainy 13 16
4: sunny 17 18
5: cloudy 19 23
我试着运行以下程序,但没有成功
dt[, .(start.point = head(.I,1), end.point = tail(.I,1)) , by="wea"]
因为“by”将第二个“cloudy”块与第一个“cloudy”块组合在一起,但我想分离连续的块。您可以使用
.I
创建索引,并在by
语句中使用rleid
来分离需要的部分。使用:
dt[, .(start.point = .I[1], end.point = .I[.N]), by = .(wea, rleid(wea))
][, rleid := NULL][]
给出:
wea start.point end.point
1: cloudy 1 8
2: sunny 9 12
3: rainy 13 16
4: sunny 17 18
5: cloudy 19 23
一般来说,最好用文字解释您想要什么,而不是仅仅显示所需的输出。我不知道函数
rleid
。它运行良好。谢谢
wea start.point end.point
1: cloudy 1 8
2: sunny 9 12
3: rainy 13 16
4: sunny 17 18
5: cloudy 19 23