如何在R语言中统一数据框中水样化学量的单位(mg转μg)
解决水样化学量单位统一转换问题
你的核心问题是:之前的代码仅对筛选出的mg/l单位子集做了计算,但没把修改后的值赋值回原数据框,所以原数据没有变化。下面给两种简单直接的解决方法:
基础R原生实现
假设数值列名为value,单位列名为units,直接通过索引赋值完成转换:
# 把所有mg/l单位的数值转成微克(乘以1000) df$value[df$units == 'mg/l'] <- df$value[df$units == 'mg/l'] * 1000 # 删除单位列 df <- df[, !names(df) %in% 'units'] # 也可以用subset更直观 # df <- subset(df, select = -units)
dplyr tidyverse风格实现(更简洁)
如果平时用tidyverse工具链,用mutate+ifelse的写法更清晰:
library(dplyr) df <- df %>% # 条件转换单位:mg/l转微克,其他保持不变 mutate(value = ifelse(units == 'mg/l', value * 1000, value)) %>% # 移除单位列 select(-units)
如果你的数值列或单位列名称不一样,把代码里的value和units换成实际列名就行。
内容的提问来源于stack exchange,提问作者caint
相关产品推荐
相关产品推荐

