在R中按组计算唯一值组合的出现频率
R语言实现分组统计唯一值组合频率
可以用dplyr包完成这个需求,代码如下:
# 如果没安装dplyr先执行安装 # install.packages("dplyr") library(dplyr) # 原始数据 organisation <- c("A","A","A","A","B","B","B","B","C","C","C","C","D","D","D","D") variable <- c("0","0","1","2","0","0","1","1","0","0","1","1","0","0","2","2") df <- data.frame(organisation,variable) # 核心处理逻辑 result <- df %>% # 按组织维度分组 group_by(organisation) %>% # 提取每组的唯一variable值,排序后用逗号拼接成统一格式的字符串 summarise(unique_values = paste(sort(unique(variable)), collapse = ",")) %>% # 按唯一值组合分组,统计出现次数 group_by(unique_values) %>% summarise(frequency = n()) # 输出结果 print(result)
代码说明:
group_by(organisation):确保每个组织的变量值处理独立进行,不会跨组织混淆。paste(sort(unique(variable)), collapse = ","):先提取每组的唯一变量值,排序后用逗号拼接,避免"0,1"和"1,0"被误判为不同组合。- 二次分组统计
n():直接得到每个唯一值组合对应的出现频率。
运行后会得到符合需求的结果:
# A tibble: 3 × 2 unique_values frequency <chr> <int> 1 0,1 2 2 0,1,2 1 3 0,2 1
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

