用 R 中数据框中的值替换不等式
Replace inequalities with values in dataframe in R
我有一个涉及多个列的数据框,其中有许多存在不平等的情况。我想要的是一个 R 脚本,它将识别这些不等式并将它们替换为实际值。更具体地说,假设我们有 "<2" 并且我们想用它的一半值替换它 ("<2" -> 1.0)。有没有一种通用的方法可以做到这一点,这样我就不需要手动查找数据框中的所有不等式并替换它们?
一个简单的例子如下:
第 1 栏、第 2 栏、第 3 栏、第 4 栏
2.2, <3, 4,<2
3.4, 4, <5,3
4.2, 2,2.1,5
1.3, 1,4,<8
我想得到这样的东西:
第 1 栏、第 2 栏、第 3 栏、第 4 栏
2.2, 1.5, 4,1
3.4, 4, 2,5,3
4.2, 2,2.1,5
1.3, 1,4,4
我们可以用表达式替换 <
和 eval
uate
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")
我有一个涉及多个列的数据框,其中有许多存在不平等的情况。我想要的是一个 R 脚本,它将识别这些不等式并将它们替换为实际值。更具体地说,假设我们有 "<2" 并且我们想用它的一半值替换它 ("<2" -> 1.0)。有没有一种通用的方法可以做到这一点,这样我就不需要手动查找数据框中的所有不等式并替换它们?
一个简单的例子如下:
第 1 栏、第 2 栏、第 3 栏、第 4 栏
2.2, <3, 4,<2
3.4, 4, <5,3
4.2, 2,2.1,5
1.3, 1,4,<8
我想得到这样的东西:
第 1 栏、第 2 栏、第 3 栏、第 4 栏
2.2, 1.5, 4,1
3.4, 4, 2,5,3
4.2, 2,2.1,5
1.3, 1,4,4
我们可以用表达式替换 <
和 eval
uate
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")