首页 > 解决方案 > 更改数据框的单位和值

问题描述

我有一个数据框,其中包含化合物浓度及其在水中的目标值。对于某些化合物,注册值的单位与其最大值不同。

我想将目标转换为相同的值单位。所以例如我有这个:

  Value    Dimension  Target   Unit
A  0.001    ug/L       12     ng/L
B  0.1      ug/L       1      ug/L
C  0.25     ug/L       1      ng/L

我想得到:

   Value    Dimension  Target   Unit
A  0.001    ug/L       0.012     ug/L
B  0.1      ug/L       1         ug/L
C  0.25     ug/L       0.001     ug/L

1ng/L = 1000 ug/L

我怎样才能在 R 中做到这一点?

谢谢!

标签: rmatchunits-of-measurement

解决方案


你可以使用ifelse. 如果dat是您提供的 data.frame,那么这样的事情应该可以工作:

dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])

如果您有两个以上不同的单元,则需要嵌套ifelse调用或ifelse连续调用。

请注意,它ifelse是 , 的矢量化版本if,并一次处理整个列。


推荐阅读