通过因子获取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
答案 0 :(得分:4)
我们可以使用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)
或者我们可以直接在last
上使用.SD
(正如评论中提到的@jangorecki)
dt[, last(.SD), category]
last
还有另一个dplyr
函数。因此,如果两个软件包都已加载,最好指定data.table::last
,以免它被屏蔽。