我有一个大型数据集(大约8,000个观测值),其中列出了每个观测值的原产国。如果该国家/地区仅在数据集中出现的次数少于十次,我想将国家/地区名称替换为“其他”。
实现这一目标的最佳功能或功能组合是什么?
数据的示例子集:
id country
3 Israel
5 USA
6 USA
7 USA
8 USA
9 USA
10 USA
11 USA
12 Spain
13 Spain
14 Spain
15 Spain
16 Spain
17 Spain
17 Spain
18 Spain
18 Spain
19 Spain
19 Spain
20 Brazil
21 Brazil
22 Brazil
23 Brazil
24 Brazil
25 Brazil
26 Brazil
27 Brazil
28 Brazil
答案 0 :(得分:2)
使用基数R的可重复示例,假设一个因子(您可能希望它):
d = data.frame(country=c("Israel","USA","USA","USA",
rep("Spain",11),rep("Brazil",5)))
> table(d$country)
Brazil Israel Spain USA
5 1 11 3
d$id = 1:nrow(d)
levels(d$country)[table(d$country) < 10]="other"
给出:
> table(d$country)
other Spain
9 11
(我的巴西人比你的样本数据少)
如果d$country
不是一个因素,请先d$country = factor(d$country)
。
答案 1 :(得分:1)
我们可以使用data.table
library(data.table)
setDT(df1)[df1[, .I[.N < 10], country]$V1, country := "other"][]