You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言summarise函数计算占比时排除NA值

解决R语言数据框分组占比排除NA的问题

你的问题核心是分母用了整个数据集的行数(包含NA),且分组时把NA当成了一个有效类别,所以才会出现NA的占比。下面给你两种简单的解决办法:

方法一:先过滤NA再计算

先把Age_t0列中含NA的行过滤掉,再计算各组占比,此时分母是过滤后有效数据的总行数:

ileagedata %>%
  filter(!is.na(Age_t0)) %>% 
  group_by(Age_t0) %>%
  summarise(percent = 100 * n() / nrow(.))

这里nrow(.)指代的是经过filter处理后的数据集行数,也就是有效数据的总数。

方法二:直接在计算中排除NA计数

如果不想提前过滤数据,可以在计算分母时直接统计Age_t0列非NA值的总数,最后再去掉NA对应的分组行:

ileagedata %>%
  group_by(Age_t0) %>%
  summarise(percent = 100 * n() / sum(!is.na(Age_t0))) %>%
  filter(!is.na(Age_t0))

其中sum(!is.na(Age_t0))会统计整个数据框中Age_t0列非NA值的总数量,确保分母是有效数据的总数;最后一步filter用来去掉结果中NA对应的行。

两种方法都能得到排除NA后的占比结果,你可以根据自己的需求选择。

内容的提问来源于stack exchange,提问作者Juliette Villx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:25:19