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
相关产品推荐
相关产品推荐

