我正在尝试导入化学分析的大型环境数据集。该数据集的结构如下:
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
答案 0 :(得分:0)
首先,我建议在read.table或read.csv中设置stringsAsFactors = FALSE
然后,对于每个要分组的列,例如&#34; 0.2&#34;并用你的等式替换它,然后评估该表达式,例如:eval(parse(text = gsub("<(.*)","\\1/sqrt(2)","<0.2")))
为所有人都可以使用dplyr&#39; s 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))