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

R语言切片后计算rowSums报错问题求助

问题解决:分组后rowSums报错的处理

报错原因

你在执行group_by(DPP)并slice(1)后,没有取消数据框的分组状态。此时使用mutate会默认按每组执行操作,而rowSums返回的是整个数据集所有行的求和结果(共5行),但每组仅1行,导致长度不匹配,触发报错。

修正代码

card_201406 <- data.frame(ID = c(123, 234, 344, 456, 678, 124, 567, 256, 345), 
                          Block_Code = c("D", "U","Z", "G","T","R","A","U", "B"),
                          DPP = c(1,2,2,3,3,3,4,5,1),
                          a = 1:9, a_1 = 1:9, a_2 = 1:9, a_3 = 1:9, a_4 = 1:9)

# 排序、分组取首行后,取消分组状态
card_201406 <- card_201406 %>% arrange(DPP) %>% group_by(DPP) %>% slice(1) %>% ungroup()

# 直接计算指定列的行和
card_201406 <- card_201406 %>% 
  mutate(SUM_a = rowSums(select(., starts_with("a_"))))

关键修正点

  • 添加ungroup():取消数据框的分组状态,让后续mutate按整个数据框的行处理,而非按组。
  • 简化rowSums写法:select(., starts_with("a_"))直接返回目标列组成的数据框,rowSums可直接计算每行和,无需额外用do.call(cbind)转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:15:36