用r中dataframe中的值替换不等式



我有一个包含几列的数据框架,其中有许多存在不平等的实例。我想要的,是一个R脚本,它可以识别这些不等式并用实际值代替它们。更具体地说,假设我们有" " 2"我们想用它的一半值("<2"→1.0)。是否有一种通用的方法来做到这一点,这样我就不需要手动找到数据框架内的所有不等式并替换它们?

一个简单的例子可能如下:

Col1,Col2, Col3, Col42.2, <3,4,<2
3.4, 4,<5,34.2、2、2.1、51.3、1、4、8 & lt;

我想得到这样的东西:

Col1、Col2 Col3 Col42.2、1.5、4、1
3.4、4、2、5、34.2、2、2.1、51.3、1、4、4

我们可以用表达式代替<eval

df1[] <-  lapply(df1, function(x) sapply(sub("<", "(1/2)*", x, fixed = TRUE), 
function(y) eval(parse(text = y))))
df1
#  Col1 Col2 Col3 Col4
#1  2.2  1.5  4.0    1
#2  3.4  4.0  2.5    3
#3  4.2  2.0  2.1    5
#4  1.3  1.0  4.0    4

数据
df1 <- structure(list(Col1 = c(2.2, 3.4, 4.2, 1.3), Col2 = c("<3", "4", 
"2", "1"), Col3 = c("4", "<5", "2.1", "4"), Col4 = c("<2", "3", 
"5", "<8")), row.names = c(NA, -4L), class = "data.frame")

最新更新