我想将目标转换为相同的值单位。 例如,我有这个:
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中做到这一点?
谢谢!
答案 0 :(得分:0)
您可以使用ifelse
。如果dat
是您提供的data.frame,则应该可以执行以下操作:
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])
如果您有两个以上的不同部门,则需要嵌套ifelse
调用或连续调用ifelse
。
请注意,ifelse
是if
的向量化版本,可一次处理整列。
答案 1 :(得分:0)
您可以使用嵌套的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