我正在尝试引进一个大型的环境化学分析数据集。此数据集组织如下:
10 columns
是样本信息(例如实验室、监测站、日期、坐标等)。(more than 90 columns)
是对不同变量(例如铝、pH、铜等)的观测。最大的问题是,左截尾数据被写成"< 0.02"
,并且每个参数的这个值是不同的。当我导入csv
文件时,至少有一个左截尾值的所有列都被导入为Factor datatype
。我想用一条基本规则来取代每一个左派审查:
- Replace "< X" for value "X/sqrt(2)".
这只是一个示例,说明我最初是如何管理这些数据的。更换每一列是不可行的,因为有这么多的参数和阈值,即使在相同的参数和实验室内也可能有变化(如果实验室设备更新的话)。
提前谢谢你。
注意:我已经上传了我的数据集的一个更具体的摘录。它可以在这里获得:http://www.filehosting.org/file/details/722215/sample.csv
发布于 2018-01-29 23:57:59
首先,我建议在read.table或read.csv中设置read.table= FALSE
然后,对于每一列,例如"0.2“,用您的方程替换它,然后计算这个表达式,例如:eval(parse(text = gsub("<(.*)","\\1/sqrt(2)","<0.2")))
要做到这一点,您可以使用dplyr的mutate_at
library(dplyr)
tdat <- data.frame(Site = letters[1:4], d1 = c(0,0,"<5",4), d2 = c("<0.5",0,7,4), stringsAsFactors = F)
myfun <- function(x){eval(parse(text = gsub("<(.*)","\\1/sqrt(2)",x)))}
tdat <- tdat %>% rowwise() %>% mutate_at(vars(d1:d2), .funs = funs(myfun))
https://stackoverflow.com/questions/48511606
复制相似问题