将多组同结构0-1变量统计Yes数量时代码结果异常求助
问题原因与解决方案
问题原因
你当前的代码逻辑是按行统计每行中1的总数(即每一行里有多少个Yes选项),但你的实际需求是统计每个变量(列)中1的总数量,统计维度完全错误,所以结果不符合预期。
正确实现方法
根据你的需求,这里提供几种简洁的实现方式:
方式1:dplyr直接列统计
用dplyr的summarise+across直接对目标列求和,得到每个变量的Yes数量:
library(dplyr) data %>% summarise(across(F12.4.1:F12.4.10, sum))
方式2:输出指定格式(如F12.4.1---30)
如果需要输出成你描述的变量名---数量格式,可以先转成长格式再统计:
data %>% pivot_longer(everything(), names_to = "variable", values_to = "yes_no") %>% group_by(variable) %>% summarise(yes_count = sum(yes_no)) %>% mutate(result = paste(variable, yes_count, sep = "---")) %>% pull(result)
方式3:基础R快速实现
用基础R的colSums可以更高效地完成统计:
# 直接得到各变量的Yes数量 colSums(data) # 转换为指定格式 paste(names(data), colSums(data), sep = "---")
内容的提问来源于stack exchange,提问作者miri queer
相关产品推荐
相关产品推荐

