更改数据框的单位和值
Change units and values of data frame
我有一个数据框,其中包含化合物浓度及其在水中的目标值。
对于某些化合物,注册值的单位与其最大值不同。
我想将目标转换为相同单位的值。
所以例如我有这个:
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 中执行此操作?
谢谢!
您可以使用 ifelse
。如果 dat
是您提供的 data.frame,那么这样的事情应该有效:
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])
如果您有两个以上的不同单元,则需要嵌套调用 ifelse
或连续调用 ifelse
。
请注意 ifelse
是 if
的矢量化版本,一次处理整个列。
您可以使用嵌套的 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
我有一个数据框,其中包含化合物浓度及其在水中的目标值。 对于某些化合物,注册值的单位与其最大值不同。
我想将目标转换为相同单位的值。 所以例如我有这个:
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 中执行此操作?
谢谢!
您可以使用 ifelse
。如果 dat
是您提供的 data.frame,那么这样的事情应该有效:
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])
如果您有两个以上的不同单元,则需要嵌套调用 ifelse
或连续调用 ifelse
。
请注意 ifelse
是 if
的矢量化版本,一次处理整个列。
您可以使用嵌套的 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