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

R语言使用mutate结合rowSums统计语言数量报错如何解决?

R语言dplyr分组数据按行求和报错解决方案

问题根因

你的真实数据集part_langs是分组数据框(grouped_df),从str输出可以看到它按Participant.Private.ID完成了分组,每个分组仅包含1行数据。
报错的核心逻辑如下:

  • dplyr管道中的mutate操作会按分组独立执行
  • 你直接调用part_langs[2:14]取的是整个原始数据集的13列共7行数据,rowSums计算后得到长度为7的向量
  • 每个分组仅有1行,长度为7的向量无法匹配长度为1的分组,因此触发维度不匹配报错
    你的测试数据集是未分组的普通数据框,因此相同逻辑可以正常运行。

修复方案

方案1:先取消分组再计算(最推荐)

先调用ungroup()取消分组,同时用.指代管道中传递的当前数据,避免引用原始全量数据集:

num <- part_langs %>%
  ungroup() %>%
  mutate(num.langs = rowSums(.[2:14]))

方案2:用across语法选列(稳定性更高)

不需要依赖列位置,直接按列名范围选择所有需要统计的二值列,避免后续列顺序变化导致统计错误:

num <- part_langs %>%
  ungroup() %>%
  mutate(num.langs = rowSums(across(French:Other)))

方案3:保留分组结构的写法

如果业务需要保留原数据的分组属性,可以调用cur_data()指代当前分组内的数据,避免维度不匹配:

num <- part_langs %>%
  mutate(num.langs = rowSums(cur_data()[2:14]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:09