R语言中二元变量组合频率统计与排序实现方法
R统计二元变量所有唯一组合的出现频率并排序
基于你提供的示例数据,下面给出两种可直接运行的实现方案:
方案1:基础R实现(无需额外安装包)
# 生成示例数据 set.seed(5) my_data<-data.frame("Slept Well"=sample(c(0,1),10,TRUE), "Had Breakfast"=sample(c(0,1),10,TRUE), "Worked out"=sample(c(0,1),10,TRUE), "Meditated"=sample(c(0,1),10,TRUE)) # 统计所有唯一组合的出现频率 freq_table <- as.data.frame(table(my_data)) # 按频率从高到低排序 sorted_freq <- freq_table[order(-freq_table$Freq),] # 可选:过滤掉从未出现的组合(table会默认枚举所有可能组合,未出现的频率为0) sorted_freq <- sorted_freq[sorted_freq$Freq > 0,] # 输出结果 print(sorted_freq)
方案2:tidyverse实现(代码更简洁易读)
# 未安装dplyr的话先运行:install.packages("dplyr") library(dplyr) # 生成示例数据 set.seed(5) my_data<-data.frame("Slept Well"=sample(c(0,1),10,TRUE), "Had Breakfast"=sample(c(0,1),10,TRUE), "Worked out"=sample(c(0,1),10,TRUE), "Meditated"=sample(c(0,1),10,TRUE)) # 直接统计所有组合频率并按降序排序,只会保留实际出现过的组合 sorted_freq <- my_data %>% count(across(everything()), name = "出现次数", sort = TRUE) # 输出结果 print(sorted_freq)
结果使用说明
你需要查询的「睡眠良好=1、冥想=1、未吃早餐=0、未锻炼=0」这类组合的出现次数,直接在输出的结果表中匹配对应变量值的行,读取频率列数值即可。
内容的提问来源于stack exchange,提问作者Cinnamon
相关产品推荐
相关产品推荐

