我有一个数据框架,里面有水中化合物浓度及其目标值。对于某些化合物,注册值的单位不同于其最大值。
我想将目标转换为相同的值单位。举个例子,我有这个:
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/L1 ug/L = 1000 ug/L
我如何在R中做到这一点?
谢谢!
发布于 2019-01-15 23:47:23
您可以使用一个嵌套的ifelse语句来捕获所有3个场景(相同,从ng到ug,从ug到ng)
ifelse(df$Dimension == df$Unit, df$Target,
ifelse(df$Dimension != df$Unit & grepl('ug', df$Dimension), df$Target / 1000,
df$Target * 1000))
#[1] 0.012 1.000 0.001发布于 2019-01-15 23:44:26
您可以使用ifelse。如果dat是您提供的data.frame,那么下面这样的代码应该是有效的:
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])如果您有两个以上的不同单元,则需要嵌套ifelse调用或连续调用ifelse。
请注意,ifelse是if的矢量化版本,它一次处理整个列。
https://stackoverflow.com/questions/54202137
复制相似问题