>按因子获取 data.table 尾行的最佳方法是什么?
假设我有:
> dt <- data.table(category = c("A", "A", "B", "B", "B"), value = c(1,2,3,4,5))
> dt
category value
1: A 1
2: A 2
3: B 3
4: B 4
5: B 5
我想得到这个,但我不确定最有效的方法:
category value
1: A 2
2: B 5
我们可以使用last
dt[,list(value=last(value)) , by = category]
# category value
#1: A 2
#2: B 5
如果有很多列
dt[, lapply(.SD, last), category]
或者如果数据按"类别"排序,则为其他选项
dt[!duplicated(category, fromLast=TRUE)]
# category value
#1: A 2
#2: B 5
或者正如@Frank提到的
unique(dt, by="category", fromLast=TRUE)
或者我们可以直接在.SD
上使用last
(如评论中@jangorecki提到的)
dt[, last(.SD), category]
dplyr
还有另一个last
函数。 因此,如果两个包都已加载,最好指定data.table::last
,以免它被屏蔽。