Как сравнить каждую строку кадра данных 1 с каждым кадром данных 2 и подвести итог, если значения совпадают? - PullRequest
0 голосов
/ 10 июня 2018

Предположим, что у вас есть два кадра данных одинакового размера, состоящие из записей ИСТИНА, ЛОЖЬ или НС:

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")
    } 
  }
}

Я еще не пытался подвести итог, потому что я ужеизо всех сил пытался сравнить каждую запись.

Кто-нибудь знает, как это будет работать в легкой для понимания степени?

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 10 июня 2018

Вы можете сделать это просто, так как

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

== выполняет поэлементное сравнение, что соответствует требованиям вашей задачи, потому что ваши df1 и df2 имеют одинаковые размеры (и структура).

...