【发布时间】:2017-09-28 03:05:20
【问题描述】:
我有一个数据表,其中一列包含缺失的单元格和字符串,如7 1/4 INCHES、1/4 INC、9/16 INCH、1 3/4 INCHES、1 13/16 INCHES、20 INCHES。我想去掉空格和 INC/INCH/INCHES(字符串拆分),并通过将它们转换为像 7+1/4=7.25 这样的数字来评估字符串的其余部分。
library(data.table)
data<-data.table(variable = c("", "", "7 1/4 INCHES", "1/4 INC", "9/16 INCH", "1 3/4 INCHES", "", "1 13/16 INCHES", "20 INCHES", "", ""))
#Assigning 0s to empty cells
data$variable[data$variable == "" ] = 0
#Getting rid of INCH, INCHES and INCH
data$variable<-gsub("[[:space:]][A-z]*$", "", data$variable)
#Adding "+" instead of whitespace (for summation), like 7+1/4 instead of 7 1/4
data$variable<-gsub( " ", "+", data$variable)
data$variable<-eval(parse(text=data$variable))
但是,我无法使 eval 函数正常工作。你能帮我一下吗?
其次,这个特定的代码似乎不是一种非常有效的方法。我有一个非常大的数据集,它有 4 列有很多观察结果,就像上面的小例子一样。我怎样才能把东西收紧一点?
编辑:
data$variable<-sapply(data$variable, function(x) eval(parse(text=x)))
我使用上面的行使它工作。但是,这仍然不是一种有效的方法。
【问题讨论】: