R使用group_by与mutate新增列时报Unexpected '='错误如何解决
R dplyr分组计算新增列报错解决方案
报错原因
该报错是mutate函数的赋值语法错误导致的:
- dplyr的管道操作中,
mutate接收的是上游group_by传递过来的分组数据集,赋值左侧直接写新列名即可,不需要额外加原始数据集的data$前缀。这种带$的全局对象引用写法不符合mutate的参数语法规则,所以会触发「意外的'='」报错。 - 额外说明:即使语法允许,直接使用
data$my_new_column也会导致分组计算的结果和原始数据集索引不匹配,无法正确把分组均值匹配到每一行。
修复方案
直接去掉赋值左侧的data$前缀即可,修改后的代码如下:
library(dplyr) # 将分组均值作为新列追加到原数据集 data <- data %>% group_by(A, B) %>% mutate(my_new_column = mean(C)) %>% ungroup() # 非强制要求,建议添加,避免后续未分组的操作出现异常
如果你只需要保留A、B分组和对应均值的聚合结果,不需要保留原始数据的所有行,可以把mutate替换为summarise:
data_agg <- data %>% group_by(A, B) %>% summarise(avg_C = mean(C)) %>% ungroup()
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

