R语言ggplot绘制多选项分类变量条形图:合并多选项计数
处理Qualtrics多选数据并正确统计绘图
要解决这个问题,核心是把逗号分隔的多选条目拆分成单独的选项行,这样就能让R1和R2的计数自动包含多选的部分,同时自然排除"R1,R2"这个组合类别。以下是两种实现方式:
方法一:使用tidyverse(推荐)
tidyverse里的separate_rows()函数可以快速拆分逗号分隔的字符串,非常适合处理这类Qualtrics导出的多选数据:
# 加载所需包 library(tidyverse) # 原始数据 data <- data.frame('reason'=c(rep('R1', 5),rep('R2', 3),rep('R1,R2', 4))) # 拆分多选条目:将每个逗号分隔的选项拆为单独行 data_cleaned <- data %>% separate_rows(reason, sep = ",") # 绘制条形图 ggplot(data = data_cleaned, aes(x = reason)) + geom_bar() + coord_flip()
处理后的数据会把每条"R1,R2"拆成两行(分别是R1和R2),此时geom_bar()统计的R1总数为5+4=9,R2总数为3+4=7,且不会显示组合类别。
方法二:使用Base R
如果不想加载额外包,也可以用Base R的strsplit()和unlist()实现:
# 原始数据 data <- data.frame('reason'=c(rep('R1', 5),rep('R2', 3),rep('R1,R2', 4))) # 拆分并重构数据框 split_reasons <- strsplit(data$reason, ",") data_cleaned_base <- data.frame(reason = unlist(split_reasons)) # 绘制条形图 ggplot(data = data_cleaned_base, aes(x = reason)) + geom_bar() + coord_flip()
两种方法最终的绘图效果完全一致,都能满足你的需求。
内容的提问来源于stack exchange,提问作者mariodrumblue
相关产品推荐
相关产品推荐

