R语言使用dcast统计时如何为因子变量的0观测水平显示0值
解决方法
- 首先确认已为数据框的
AEOUT列设置了完整的预设因子水平,你的初始数据没有应用这层设置,需要先运行:
df$AEOUT <- factor(df$AEOUT, levels = c("RECOVERED/RESOLVED","RECOVERED/RESOLVED WITH SEQUELAE", "RECOVERING/RESOLVING", "NOT RECOVERED/NOT RESOLVED", "FATAL", "UNKNOWN"))
- 使用
dcast时添加drop = FALSE参数,同时指定计数的聚合函数,空水平会自动填充为0,同时保留原有因子顺序:
library(reshape2) library(dplyr) test <- df %>% dcast(AEOUT ~ AEREL1S, fun.aggregate = length, drop = FALSE, value.var = "AEREL1S")
如果你习惯使用tidyverse系列的函数,也可以用count+pivot_wider实现相同效果:
library(dplyr) library(tidyr) test <- df %>% count(AEOUT, AEREL1S, .drop = FALSE) %>% pivot_wider( names_from = AEREL1S, values_from = n, values_fill = 0 )
内容的提问来源于stack exchange,提问作者Stataq
相关产品推荐
相关产品推荐

