首页 > 解决方案 > 如何获取某个组的第一个值和后三个值

问题描述

目前,我有一个时间序列数据表,我必须获取每个组的第一个和最后一个条目。所以我使用下面的代码来做到这一点。

data[,c(.SD[1,] , .SD[2,]),by=c("id","status","group")]

现在,我想按分组取第一个和最后三个条目,而不是第一个和最后一个。

任何帮助表示赞赏。

标签: rdplyrdata.table

解决方案


又快又脏

#sample data
DT <- data.table( id = 1:2, value = 1:100 )
#code
DT[, .SD[ c( 1:3, .N-2, .N-1, .N ) ], by = .(id) ]

#output
#    id value
# 1:  1     1
# 2:  1     3
# 3:  1     5
# 4:  1    95
# 5:  1    97
# 6:  1    99
# 7:  2     2
# 8:  2     4
# 9:  2     6
# 10: 2    96
# 11: 2    98
# 12: 2   100

推荐阅读