我有一个生态数据的数据框,其中某些条目比化学中称为LOQ(定量限)的条目低。这些测量结果报告为“小于LOQ”。我要做的是将这些值更改为LOQ的一半。我可能可以找到删除“ <”的代码,但随后我不知道该除以2的哪个项。
#creating df
x1 <- c(1,2,"<1")
x2 <- c(3,"<4",3)
x3 <- c(1,2,3)
df <- data.frame(x1,x2,x3)
df
x1 x2 x3
1 1 3 1
2 2 <4 2
3 <1 3 3
Run Code Online (Sandbox Code Playgroud)
我希望结果为:
##### result #######
x1 <- c(1,2,0.5)
x2 <- c(3,2,3)
x3 <- c(1,2,3)
result <- data.frame(x1,x2,x3)
x1 x2 x3
1 1.0 3 1
2 2.0 2 2
3 0.5 3 3
Run Code Online (Sandbox Code Playgroud)
因此,基本上,将<符号忽略,并将剩余值除以2。有关如何执行此操作的任何想法?
小智 5
使用一个事实,即可以以1个或2个暗淡形式引用矩阵对象。
m <- as.matrix(df)
isLT <- function(t) substr(t,1,1) == '<'
islt <- which(isLT(m))
delLT <- function(x) substr(x,2,length(x))
m[islt] <- delLT(m[islt])
mode(m) <- 'numeric'
m[islt] <- m[islt] / 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |