R语言用dplyr的mutate转换千克为吨后修改未保存到原数据集如何解决
你的代码存在3个明显问题,修改后即可实现需求:
- dplyr管道操作的处理结果没有赋值回原数据框
df,修改不会自动保存到原数据 - 提前用
filter()筛选后仅保留了千克单位的行,丢失了原数据中吨单位的行 group_by(Quantity)是多余操作,不需要按数值分组,同时你后续修改单位的代码写错了列名,示例数据中单位对应的列是Type不是Unit
方案1:dplyr管道一步实现
library(dplyr) df <- df %>% mutate( # 千克单位的数值除以1000转吨,其他单位保留原值 Quantity = ifelse(Type == "Kilograms", Quantity / 1000, Quantity), # 把所有Kilograms标识改为Tonnes Type = ifelse(Type == "Kilograms", "Tonnes", Type) )
方案2:基础R语法实现
# 转换千克为吨 df$Quantity[df$Type == "Kilograms"] <- df$Quantity[df$Type == "Kilograms"] / 1000 # 统一单位标识 df$Type[df$Type == "Kilograms"] <- "Tonnes"
内容的提问来源于stack exchange,提问作者Gabriel Liu
相关产品推荐
相关产品推荐

