gpt4 book ai didi

r - 只保留 x 最大的组与 data.table

转载 作者:行者123 更新时间:2023-12-04 12:28:19 26 4
gpt4 key购买 nike

我最近开始在 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 个最大的组。

最佳答案

这是一个使用连接的方法。

x <- 1

dt[dt[, .N, by=group][order(-N)[1:x]], on="group"]
group value N
1: A 0.2655087 3
2: A 0.3721239 3
3: A 0.5728534 3

聚合内部 data.frame 以计算观察值,并使用 x 的值使用 order 子集检索 x 最大组的位置。然后将生成的数据框按组连接到原始数据框。

关于r - 只保留 x 最大的组与 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45367820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com