替换R中不同列中的多个"less than values"
Replace multiple "less than values" in different columns in R
我有一个用于实验室分析多个参数的数据框。许多值低于检测限,并被报告为(<检测限;例如<0.005)
数据框如下所示
varA varB varC varD varE varF varG
0.024 0.69 . . . . <0.01
0.012 0.23 0.26
<0.005 0.54 0.28
0.017 0.62 0.30
0.016 <0.10 0.31
0.018 0.34 0.24
0.020 0.44 <0.01
<0.005 0.52 0.24
0.080 <0.10 0.25
我想使用此公式转换所有低于检测限的值
<detection limit ====> detection limit/sqare root (2)
我为 varA 做了如下操作
df$varA1<-as.character(df$varA)
df$varA1<-ifelse(df$varA1=="<0.005", 0.005/sqrt(2), df$varA1)
df$varA2<-as.numeric(df$varA1)
我可以对其他列和其他低于检测限的值执行相同的操作。但是,鉴于我的数据很大,这需要时间。
有什么建议可以快速更改不同列中低于检测限的所有值吗?
dLimit <- function(v){
v <- as.character(v)
isLimit <- grepl("<", v)
v[isLimit] <- as.numeric(gsub("<(.*)", "\1", v[isLimit]))/sqrt(2)
as.numeric(v)
}
apply(df, 2, dLimit)
我有一个用于实验室分析多个参数的数据框。许多值低于检测限,并被报告为(<检测限;例如<0.005)
数据框如下所示
varA varB varC varD varE varF varG
0.024 0.69 . . . . <0.01
0.012 0.23 0.26
<0.005 0.54 0.28
0.017 0.62 0.30
0.016 <0.10 0.31
0.018 0.34 0.24
0.020 0.44 <0.01
<0.005 0.52 0.24
0.080 <0.10 0.25
我想使用此公式转换所有低于检测限的值
<detection limit ====> detection limit/sqare root (2)
我为 varA 做了如下操作
df$varA1<-as.character(df$varA)
df$varA1<-ifelse(df$varA1=="<0.005", 0.005/sqrt(2), df$varA1)
df$varA2<-as.numeric(df$varA1)
我可以对其他列和其他低于检测限的值执行相同的操作。但是,鉴于我的数据很大,这需要时间。
有什么建议可以快速更改不同列中低于检测限的所有值吗?
dLimit <- function(v){
v <- as.character(v)
isLimit <- grepl("<", v)
v[isLimit] <- as.numeric(gsub("<(.*)", "\1", v[isLimit]))/sqrt(2)
as.numeric(v)
}
apply(df, 2, dLimit)