在数据帧之间找到相等的行,包括NA作为值

时间:2019-04-23 06:56:39

标签: r dataframe missing-data

我有两个数据框:

df = structure(list(x = c(NA, NA, "b", "b", "b"), y = c("f", "f", 
"f", "g", "g")), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

df2 = structure(list(x = c(NA, NA, "a", "b", "b"), y = c("g", "f", 
"f", "g", "g")), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

当将NA作为值时,我想找到相同的行。

df == df2

因此,第二行应为“ TRUE”。相反,我们得到NA。尽管这样做的逻辑很明确,但我们可以修改df == df2以便将这些行视为相等吗?

2 个答案:

答案 0 :(得分:1)

您可以paste进行比较,即

do.call(paste, df) == do.call(paste, df2)
#[1] FALSE  TRUE FALSE  TRUE  TRUE

答案 1 :(得分:1)

一种选择是replace不具有数据集中值的NA,进行比较,并检查所有行是否都与{{​​1}}相等

rowSums

或者不进行替换,而是使用rowSums(replace(df2, is.na(df2), "0") == replace(df, is.na(df), "0"))== 2 #[1] FALSE TRUE FALSE TRUE TRUE

创建一个逻辑条件
is.na