gpt4 book ai didi

删除出现 x 次 R 的 ID

转载 作者:行者123 更新时间:2023-12-04 17:36:02 25 4
gpt4 key购买 nike

我有一个 df,我想删除 df 中行数少于 X 的人。例如,在这个玩具示例中,我想保留 >= 5 行的人。

df
names fruit
4 john kiwi
7 john apple
9 john banana
13 john orange
14 john apple
2 mary orange
5 mary apple
8 mary orange
10 mary apple
12 mary apple
1 tom apple
3 tom banana
6 tom apple
11 tom kiwi

示例输出
df
names fruit
4 john kiwi
7 john apple
9 john banana
13 john orange
14 john apple
2 mary orange
5 mary apple
8 mary orange
10 mary apple
12 mary apple

提前致谢!

最佳答案

这是一个 data.table使用内置的解决方案 .N值,如 ?data.table 中所述帮助文件:‘.N’ is an integer, length 1, containing the number of rows
in the group.

#create a similar reproducible exmaple
library(data.table)
dat <- data.table(names=rep(letters[1:3],c(5,5,3)),var=1:13)

删除行:
dat[, cnt:=.N, by=names][cnt >= 5]

虽然我觉得必须有一种方法可以在不分配新变量的情况下做到这一点。
...现在在评论中感谢@mnel:
dat[,if(.N>=5).SD,by=names]

这实际上返回一个子数据表 .SD对于 by 的每个值group 如果组中的行数 .N大于或等于 5。它几乎等同于更传统的 R 子集语法:
dat[,.SD[.N >= 5],by=names]

关于删除出现 x 次 R 的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302610/

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