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

R语言group_by+summarise报错:替换行数与数据行数不匹配

问题解决方法

核心排查点

首先检查分组变量的列名是否与数据框CURVAS中的列名完全匹配:你问题描述中提到按Municipality分组,但代码里写的是Municipio,如果数据框实际列名是Municipality,这个拼写错误会导致分组逻辑异常,生成全NA的分组键,进而引发报错。

优化后的代码(解决报错+简化写法)

使用dplyr的across函数批量处理小时变量求和,同时用n_distinct替代length(unique()),代码更简洁且避免手动重复输入的错误:

library(dplyr)

# 先确认dplyr版本不低于1.0.0(across函数需要此版本)
if (packageVersion("dplyr") < "1.0.0") {
  install.packages("dplyr")
  library(dplyr)
}

CURVAS_Cliente_suma <- CURVAS %>%  
  group_by(CODIGO, Municipio) %>%  # 确保这里的列名和数据框完全一致
  summarise(
    # 批量对所有H_00到H_23的变量求和
    across(starts_with("H_"), ~sum(.x, na.rm = TRUE)),
    # 统计唯一客户数量
    n_clientes = n_distinct(COD_CONTRATO_ENCRIPTADO),
    .groups = "drop"  # 可选,取消分组状态,避免后续操作的分组干扰
  )

错误原因分析

你遇到的报错通常是由于以下情况之一:

  • 分组变量列名拼写错误,导致分组逻辑失效,生成的分组数量与预期不符,进而引发汇总时的长度不匹配。
  • 旧版本dplyr对summarise中多变量处理的兼容性问题,新版本的dplyr(1.0.0+)用across可以避免这类问题。
  • 手动重复编写24个求和语句时,可能出现的变量名拼写错误(比如某个H_xx写错),导致部分变量处理异常。

内容的提问来源于stack exchange,提问作者Monica gmez vadillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:55:31