如何检查我的表是否符合另一个表中的条件

时间:2019-12-04 07:16:28

标签: r data-comparison

我在R中是个新手。这个问题似乎很普遍,但是我无法从以前的问题中找到相关的答案。

我的数据如下:

enter image description here

并且具有我的最大限制,如下表(每行是一个单独的条件)。 enter image description here

我想对数据中符合这些条件的所有行进行比较,并希望将黄色列作为返回值。

enter image description here

希望这很清楚。

1 个答案:

答案 0 :(得分:4)

我们可以使用outer来获得与函数大于>相比的所有值组合。我们对两个列都执行此操作,并将它们添加在一起。我们正在寻找两列都超过限制的列,因此基本上是在寻找2的总和。一旦有了,我们就可以使用rowSums来获得至少包含1个非零的行,即

m1 <- (outer(df$column1, df1$Forcolumn1, `>`) + outer(df$column2, df1$Forcolumn2, `>`) == 2) * 1

#     [,1] [,2] [,3] [,4] [,5]
#[1,]    0    0    0    0    0
#[2,]    0    1    0    0    0
#[3,]    0    0    0    0    0
#[4,]    0    0    1    0    0
#[5,]    0    0    1    0    0
#[6,]    0    0    0    0    1

使用rowSums,我们将获得您的预期输出,

rowSums(m1 > 0)
#[1] 0 1 0 1 1 1

数据

dput(df)
structure(list(Data = 1:6, column1 = 11:16, column2 = c(3, 3, 
2, 2, 1, 0)), class = "data.frame", row.names = c(NA, -6L))

dput(df1)
structure(list(max_limit = 1:5, Forcolumn1 = c(11, 11, 13, 14, 
15), Forcolumn2 = c(3, 2, 0, 1, -1)), class = "data.frame", row.names = c(NA, 
-5L))