group_by和summary()使用dplyr / tidyverse在R中进行多项操作

时间:2018-09-29 18:42:16

标签: r dplyr

我正在尝试查找平均年龄最高的国家,但我还需要过滤掉数据框中条目少于5个的国家。我尝试了以下操作,但不起作用:

bil %>% 
  group_by(citizenship,age) %>% 
  mutate(n=count(citizenship), theMean=mean(age,na.rm=T)) %>% 
  filter(n>=5) %>% 
  arrange(desc(theMean))

bil是数据集,我正在尝试计算每个国家/地区有多少条目,过滤出条目少于5个的国家/地区,找到每个国家/地区的平均年龄,然后找到平均值最高的国家/地区。我对如何同时做两件事感到困惑。如果一次进行一次汇总,则会丢失其余数据。

1 个答案:

答案 0 :(得分:2)

也许这会有所帮助。请注意,count中的参数'x'是tbl/data.frame。因此,我们用“公民身份”分组而不是count,并用n()获得值的频率,得到“年龄”的mean(不确定“年龄”是否分组)变量),然后执行filter

bil %>%
   group_by(citizenship) %>% 
   mutate(n = n()) %>%     
   mutate(theMean = mean(age, na.rm=TRUE)) %>% 
   filter(n>=5) %>%
   arrange(desc(theMean))