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

如何按指定列Localidad对DataFrame分组行求和并计算指定列均值

R语言DataFrame按指定列分组计算均值与占比实现方案

你之前使用group_by()搭配rowSums()报错的核心原因是rowSums()是基础包函数,无法识别dplyr的分组状态,会直接对全表逐行计算,导致分组逻辑失效。

实现步骤

1. 加载依赖包

library(dplyr)

2. 按Localidad分组计算所有数值列的平均值

mean_result <- mydataframe %>%
  # 指定按Localidad分组
  group_by(Localidad) %>%
  summarise(
    # 所有数值列计算均值,自动忽略空值
    across(where(is.numeric), mean, na.rm = TRUE),
    # 同一Localidad下相同的非数值列取第一个值即可
    across(where(~!is.numeric(.)), first)
  )

3. 计算各Localidad对应指标的占比

如果你需要计算X2.1到X2.9这类指标的占比(单指标值/该Localidad下所有X类指标总和),可以用如下代码:

ratio_result <- mean_result %>%
  # 开启逐行计算模式
  rowwise() %>%
  mutate(
    # 计算当前行所有X开头指标的总和
    x_total = sum(c_across(starts_with("X2."))),
    # 批量生成各X指标的占比列,列名自动加ratio_前缀
    across(starts_with("X2."), ~.x / x_total, .names = "ratio_{.col}")
  ) %>%
  # 关闭逐行计算模式
  ungroup()

如果需要统计每个Localidad的行数占总数据集行数的比例,可以追加如下逻辑:

# 统计各Localidad的行数与占比
count_ratio <- mydataframe %>%
  count(Localidad, name = "row_cnt") %>%
  mutate(row_ratio = row_cnt / sum(row_cnt))

# 合并占比与均值结果
final_result <- left_join(ratio_result, count_ratio, by = "Localidad")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:03