为什么forcats的fct_lump不处理我的数据?

为什么forcats的fct_lump不处理我的数据?,r,forcats,R,Forcats,我已经离开R几个月了,所以可能会有一些后果 我在网上找到了这个数据集。我对它做了一些处理,所以我将在这里dput()它,但它最初来自 我尝试了很多东西,总是缩小重要的代码。最后,我使用了vignette(“forcats”)(我已经加载了tidyverse)中的示例代码,并使用不同的数据集进行了尝试: starwars %>% mutate(skin_color = fct_lump(skin_color, n = 5)) %>% count(skin_color, sort

我已经离开R几个月了,所以可能会有一些后果

我在网上找到了这个数据集。我对它做了一些处理,所以我将在这里
dput()
它,但它最初来自

我尝试了很多东西,总是缩小重要的代码。最后,我使用了
vignette(“forcats”)
(我已经加载了
tidyverse
)中的示例代码,并使用不同的数据集进行了尝试:

starwars %>%
  mutate(skin_color = fct_lump(skin_color, n = 5)) %>%
  count(skin_color, sort = TRUE)
  
ter %>%
  mutate(hair = fct_lump(region, n = 5)) %>%
  count(hair, sort = TRUE)

gss_cat %>%
  mutate(relig = fct_lump(relig, n = 5)) %>%
  count(relig, sort = TRUE)
它在
starwars
gss_cat
上都能正常工作,但在
ter
上不能正常工作(我的数据):

>ter%>%
+突变(头发=fct_肿块(区域,n=5))%>%
+计数(头发,排序=真)
#一个tibble:115x2
头发
1阿富汗1
2阿尔巴尼亚1
3阿尔及利亚1
4安哥拉1
5阿根廷1
6澳大利亚和大洋洲1
7澳大利亚1
8奥地利1
9阿塞拜疆1
10巴林1
#…还有105行

为什么会这样?为什么不在这里工作?

看起来您希望将死亡人数少于5人的地区归为“其他”类别。这在base R中很简单


ter$region看起来您希望将死亡人数少于5人的地区合并为“其他”类别。这在base R中很简单


ter$地区每个国家/地区只有一个条目
fct\u-lump
将把
n
最不频繁的实例组合在一起,但是如果它们都具有相同的频率,您希望
fct\u-lump
做什么?哦,是的。。。oops我可以使用哪个函数,以便根据
恐怖主义死亡人数(GTD,2018)
(另一列)进行分类?每个国家只有一个条目
fct\u-lump
将把
n
最不频繁的实例组合在一起,但是如果它们都具有相同的频率,您希望
fct\u-lump
做什么?哦,是的。。。哦,我可以使用哪个函数,以便根据
恐怖主义死亡人数(GTD,2018)
(另一个专栏)进行分类?非常感谢!但你知道有没有办法做到这一点:
ter$region[我曾想过使用
mutate
,但该代码只适用于特定行,所以我不知道……
mutate(region=ifelse('Terrorism detairies(GTD,2018)`<5,“Other”,region))
-注意,我不得不将反勾改为撇号,以便在注释中使用。拥有非法列名的另一个危险。为什么不将此列名称更改为“死亡”
——这将使您的生活更轻松,代码更易读!非常感谢你!但你知道有没有办法做到这一点:
ter$region[我曾想过使用
mutate
,但该代码只适用于特定行,所以我不知道……
mutate(region=ifelse('Terrorism detairies(GTD,2018)`<5,“Other”,region))
-注意,我不得不将反勾改为撇号,以便在注释中使用。拥有非法列名的另一个危险。为什么不将此列名称更改为“死亡”
——这将使您的生活更轻松,代码更易读!
starwars %>%
  mutate(skin_color = fct_lump(skin_color, n = 5)) %>%
  count(skin_color, sort = TRUE)
  
ter %>%
  mutate(hair = fct_lump(region, n = 5)) %>%
  count(hair, sort = TRUE)

gss_cat %>%
  mutate(relig = fct_lump(relig, n = 5)) %>%
  count(relig, sort = TRUE)
> ter %>%
+   mutate(hair = fct_lump(region, n = 5)) %>%
+   count(hair, sort = TRUE)
# A tibble: 115 x 2
   hair                      n
   <fct>                 <int>
 1 Afghanistan               1
 2 Albania                   1
 3 Algeria                   1
 4 Angola                    1
 5 Argentina                 1
 6 Australasia & Oceania     1
 7 Australia                 1
 8 Austria                   1
 9 Azerbaijan                1
10 Bahrain                   1
# … with 105 more rows