4

いくつかのパラメーターのラボ分析用のデータ フレームがあります。多くの値が検出限界を下回っており、(< 検出限界; たとえば <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)

他の列や検出限界未満の他の値についても同じことができます。ただし、データが大きいため、時間がかかります。

さまざまな列の検出限界を下回るすべての値をすばやく変更する方法はありますか?

4

1 に答える 1

4
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)
于 2015-12-15T06:16:57.417 に答える