如何用R语言dplyr实现按商店分组的多列去重计数统计?
解决方案
完全可以通过summarise()搭配n_distinct()函数实现单段代码统计,不需要分开处理两类水果再合并,示例代码如下:
library(dplyr) result <- raw %>% group_by(Shop) %>% summarise( Apples = n_distinct(Apple_id), Oranges = n_distinct(Orange_id) ) %>% arrange(Shop) # 可选,按门店名称排序匹配期望输出顺序
代码说明
n_distinct()是dplyr内置函数,作用是统计指定列去重后的数值数量,刚好对应你要的「不同品种数」统计需求- 直接在
summarise()内同时定义苹果、橙子两个统计列,一次分组就完成两类指标的计算 - 最后加
arrange(Shop)是为了让输出结果的门店排序和你给出的期望输出完全一致,不需要的话可以删掉这行
运行上述代码得到的result和你给出的期望输出完全匹配。
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

