在数据集

时间:2017-05-17 12:56:48

标签: r

我有一个大型数据集(大约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

2 个答案:

答案 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"][]