You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中对DataFrame分组统计总行数及各列唯一值数量

解决方案

你可以直接通过dplyr的group_by() + summarize()一步完成所需的聚合统计,不需要拆分多个数据集再合并,具体代码如下:

library(dplyr)

# 核心聚合逻辑
result <- df1 %>%
  group_by(col1) %>%
  summarize(
    总行数 = n(),                  # 统计每组col1的总行数
    col2唯一值数量 = n_distinct(col2),  # 统计每组内col2的唯一值个数
    col3唯一值数量 = n_distinct(col3)   # 统计每组内col3的唯一值个数
  )

# 调整列名匹配你的预期格式
result <- result %>%
  rename(
    col1 = col1,
    col2 = col2唯一值数量,
    col3 = col3唯一值数量
  ) %>%
  relocate(col1, .before = everything())

print(result)

运行后会输出你期望的结果:

# A tibble: 2 × 3
  col1   col2  col3
  <chr> <int> <int>
1 A         5     2     3
2 B         6     4     5

为什么你的原有方法无法得到结果?

你拆分多个count()再合并的思路会生成大量重复分组行(比如count(col1, col2)会输出每个col1-col2组合的计数),合并后无法直接提取每组的唯一值数量,反而增加了不必要的处理复杂度。而n_distinct()可以直接在分组后统计指定列的唯一值个数,n()直接统计分组内的总行数,一步完成所有需求。

内容的提问来源于stack exchange,提问作者Sid5427

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:32:37