如何使用group_by计算并满足某些条件的变量百分比

时间:2020-08-12 19:02:40

标签: r dplyr

我想计算在退伍军人和非退伍军人群体中"Yes" == infrc处的梗塞百分比。我尝试过这样的事情:

brfss2013 %>% 
  filter(!is.na(veteran3)) %>% 
  group_by(veteran3) %>% 
  summarise("Infarction rate" = sum("Yes" == infrc)/n())

要完成这项工作,我也必须按infrc参数分组。但是通过这种方式,n()将计入较小的组,而不是整个资深和非资深组。

如何计算退伍军人和非退伍军人中的梗死百分比?

为什么仅当我将group_by与参数infrc一起使用时,这种构造方式才能起作用?

sum("Yes" == infrc) 

这是没有道理的,因为group_by(infrc)自己将“是”,“否”分为两个组。

1 个答案:

答案 0 :(得分:0)

答案是分别处理数据集中的NA值。当构造sum("Yes" == infrc)将“是”与NA值进行比较时,它将返回整个结果的NA值。将NA值取平均值时,这很明显,但是在这种情况下,有点令人困惑。因此解决方案是使用像这样的sum("Yes" == infrc) & !is.na(infrc)这样的代码。

相关问题