r语言 - 如何将数据帧 1 的每一行与数据帧 2 的每一行进行比较,如果值相同,则求和?



假设您有两个大小相同的数据帧,由 TRUE、FALSE 或 NA 条目组成:

df1 <- data.frame(a = c(T, F, F, F, T), b=c(F, NA, NA, F, T))
View(df1)
df2 <- data.frame(a = c(T, T, T, F, NA), b=c(T, NA, T, F, T))
View(df2)

现在你想看看 df1 的每一行中有多少条目与 df2 中的条目完全相同。结果应如下所示:

SumOfSimilarValuesPerRow <- data.frame(Result = c(1, 0, 0, 2, 1))
View(SumOfSimilarValuesPerRow)

因此,首先您可能需要将 df1 的每一行中的每个条目与 df2 中的相同条目进行比较,然后汇总结果。

我尝试了双循环,但不断收到错误

missing value where TRUE/FALSE needed

尝试以下操作时:

for (i in 1:5) {
for (j in 1:2) {
if(df1[i, j] == df2[i, j]) {
print("OK")
} 
}
}

我还没有尝试总结结果,因为我已经在努力比较每个条目。

有谁知道,这将如何在一个易于理解的法西恩中工作?

任何帮助将不胜感激!

你可以简单地这样做

rowSums(df1 == df2, na.rm = TRUE)

==逐个元素进行比较,这适用于问题的要求,因为您的df1df2具有相同的大小(和结构(。

相关内容

  • 没有找到相关文章

最新更新