R新手求助:使用prop.table计算分类协变量比例时如何排除缺失值?
解决prop.table计算比例时缺失值的处理问题
看起来你遇到的是table()函数默认忽略缺失值(NA),导致prop.table()的计算分母是非NA观测的总数的情况?不过从你的输出来看,当前prop.table()的结果其实是排除了NA的(分母是17+11=28,而总观测是29),可能你是希望把NA也纳入比例计算中?下面分两种情况给你解决方案:
情况1:希望将NA作为一个类别纳入比例计算
默认情况下,table()会自动丢弃NA值,所以如果要把NA也算作一个分类,需要在table()里添加useNA参数:
# 生成包含NA的频数表 freq_table <- table(Base_imi_rel_depurada_280418$IMPcateg >= 1, useNA = "ifany") # 计算包含NA的比例 prop.table(freq_table)
这样输出会包含NA对应的比例,分母是全部观测数(17+11+1=29),结果大概是:
FALSE TRUE <NA> 0.5862069 0.3793103 0.0344828
useNA = "ifany"的意思是:当数据中存在NA时,就把NA作为一个类别展示;如果没有NA,就不显示。你也可以用useNA = "always",不管有没有NA都会显示这个类别。
情况2:确认排除NA后的比例计算(当前结果的验证)
如果你确实希望只计算非NA观测的比例,那当前的结果是正确的。table()默认会忽略NA,所以prop.table()的分母是有效观测数。你也可以手动先去除NA再计算,结果一致:
# 先移除NA值 clean_data <- na.omit(Base_imi_rel_depurada_280418$IMPcateg >= 1) # 计算比例 prop.table(table(clean_data))
输出和你现在得到的一样:
FALSE TRUE 0.6071429 0.3928571
简单总结一下:prop.table()的分母完全依赖于table()输出的频数总和,所以控制table()是否包含NA,就能决定比例计算是否纳入缺失值啦。
内容的提问来源于stack exchange,提问作者edct40
相关产品推荐
相关产品推荐

