使用R处理数据时遇mutate报错及summarise分组提示问题求助
R代码修复:生成桥梁占比列失败问题
核心问题分析
- 列名拼写不一致:代码中
ifelse生成的结构类型是tunnelS(大写S),但后续计算占比时调用的是tunnels(小写s),导致R找不到对应列,触发mutate()错误。 - 分组残留警告:
summarise()默认保留Year分组,会弹出提示,可通过.groups参数明确处理分组。
修正后的代码
d_df %>% mutate(Year = substr(Date, 7, 10)) %>% mutate(Structures = ifelse(ID %in% tnnls, "tunnels", "bridges")) %>% # 统一拼写为tunnels filter(Year %in% yrs_wnt) %>% group_by(Year, Structures) %>% summarise(Total = sum(EZPass) + sum(Cash), .groups = "drop") %>% # 添加参数消除分组警告 pivot_wider(names_from = Structures, values_from = Total) %>% mutate(Percentb = (bridges / (tunnels + bridges)))
关键修改说明
- 统一结构类型的列值拼写:如果原始数据中结构标识实际是
tunnelS,也可以将计算占比时的tunnels改为tunnelS,只要前后列名完全一致即可。 - 在
summarise()中加入.groups = "drop":完全取消分组,避免分组残留对后续操作的干扰,同时消除提示信息。
内容的提问来源于stack exchange,提问作者Dyslexic Zorro
相关产品推荐
相关产品推荐

