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

R语言dplyr按分组统计多变量唯一值数量(全NA返回NA)

R语言分组计算多列唯一值数量实现

直接用dplyr的管道操作组合函数就能实现需求,完整代码如下:

# 加载dplyr包
library(dplyr)

# 统计计算逻辑
agg_result <- your_dataframe %>%
  # 按指定四个字段的唯一值组合分组
  group_by(NAME_0, year, standardmeasure, resource) %>%
  # 批量对四个目标字段做统计
  summarise(
    across(
      # 选定需要计算唯一值的四个字段
      c(comtrade_price_mult, wb_price_mult, usgs_price_mult, multicolour_price_mult),
      # 适配缺失值规则:全NA返回NA,否则排除NA后统计唯一值数量
      ~ if (all(is.na(.))) NA_integer_ else n_distinct(., na.rm = TRUE),
      # 统计结果列命名规则:原字段名加_distinct_count后缀
      .names = "{.col}_distinct_count"
    ),
    # 计算完成后自动解除分组状态,避免影响后续操作
    .groups = "drop"
  )

逻辑说明

  • 分组逻辑完全匹配需求,group_by()会自动识别四个传入字段的所有唯一值组合拆分数据块
  • 用across()批量处理四个目标字段,无需重复编写相同统计逻辑,代码简洁易维护
  • 缺失值规则适配:先判断分组内当前列是否全部为NA,是则直接返回NA;否则调用n_distinct()时传入na.rm = TRUE排除NA值后统计唯一值数量,不会把NA算作一个有效取值
  • 最终输出为tibble格式(兼容data.frame),每一行对应一个唯一分组,列包含四个分组字段+四个字段的唯一值统计结果,符合常规统计结果输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:36:17