【发布时间】:2026-02-05 22:35:01
【问题描述】:
我最近开始在 R 中使用 data.table 包,但最近偶然发现了一个我不知道如何使用 data.table 解决的问题。
样本数据:
set.seed(1)
library(data.table)
dt = data.table(group=c("A","A","A","B","B","B","C","C"),value = runif(8))
我可以用语句添加组计数
dt[,groupcount := .N ,group]
但现在我只想保留groupcount 值最大的x 个组。我们假设x=1 作为示例。
我尝试如下链接:
dt[,groupcount := .N ,group][groupcount %in% head(sort(unique(groupcount),decreasing=TRUE),1)]
但是由于 A 组和 B 组都具有三个元素,因此它们都保留在 data.table 中。我只想要 x=1 的 x 个最大的组,所以我只想要其中一个组(A 或 B)保留。我认为这可以在 data.table 的一行中完成。这是真的吗?如果是,如何?
澄清一下:这里的 x 是一个任意选择的数字。该函数还应该适用于 x=3,它会返回最大的 3 个组。
【问题讨论】:
-
糟糕,不知道它是怎么溜进去的。已更正。
-
另一种选择:
dt[dt[order(-groupcount), unique(group)[seq_len(x)]], on = "group"]
标签: r data.table