例:
dataframe1 包含以下行和列。
+---------+---------+---------+---------+---------+
| Column1 | Column2 | Column3 | Column4 | Column5 |
+---------+---------+---------+---------+---------+
| A | B | C | D | E |
| P | Q | R | S | T |
| J | K | L | M | N |
+---------+---------+---------+---------+---------+
dataframe2 包含以下行和列。
+---------+---------+---------+---------+---------+
| Column1 | Column2 | Column3 | Column4 | Column5 |
+---------+---------+---------+---------+---------+
| B | D | E | M | N |
| Q | S | T | R | A |
| M | Q | R | A | T |
| A | B | C | D | E |
+---------+---------+---------+---------+---------+
我想要做的是首先遍历dataframe1并检查 dataframe2 中是否存在第一行 dataframe1 。在此示例中,第一行 dataframe1 出现在 dataframe2 的第四行。同样,我想检查 dataframe2 中是否存在 dataframe1 的所有行。我可以使用多个 for 循环实现此目的。但是,我想以更简单,更快捷的方式做到这一点。
答案 0 :(得分:1)
我们可以paste
每个数据集中的行(do.call(paste,...)
),然后使用%in%. The output will be a logical vector. If
所有the values from the
粘贴`输出来比较它们' df1'存在于' df2'中,它将提供' TRUE'否则' FALSE
all(do.call(paste, df1) %in% do.call(paste, df2))
另一种选择是使用来自`dplyr'的anti_join
。如果' df1'中的所有行在' df2'中找到,输出将是' 0'行。
library(dplyr)
nrow(anti_join(df1, df2))==0
答案 1 :(得分:0)
基础包。如果全部存在则为TRUE,否则为FALSE:
nrow(unique(merge(df1, df2))) == nrow(unique(df1))