2015-07-26 4 views
1

У меня есть два фрейма данных, один оригинал и один, который должен быть оригинальным, а также несколько дополнительных столбцов данных после обработки. Я хотел бы убедиться, что между исходными столбцами сохранено соответствие между исходными столбцами (т. Е. Все субъектные идентификаторы по-прежнему соответствуют исходным векторам данных в каждой строке.)R: сравнение строк значений в двух кадрах данных

Если оригинал (ориг) был тусклым 5000 х 50 и пост-обработка (pp) составляла 5000 x 100, а первые 50 столбцов должны быть одинаковыми в каждом, как я могу проверить? Есть что-то вроде setdiff(), которые могут сравнивать полные данные?

SETDIFF <- setdiff(orig[,c(1:50)], pp[,c(1:50)]) 
+0

Как насчет 'идентичных (orig [, 1: 50], pp [, 1: 50])'? – Jthorpe

+0

'all.equal (orig [, c (1:50)], pp [, c (1:50)])' также – jenesaisquoi

+0

со всеми(), я получил 'NA'. с идентичным(), я получил «FALSE». Как я могу определить, какие сейчас не совпадают? – KDA

ответ

1

В ответ на комментарий выше: найти строки и столбца индексов, где значения не равны, используйте which(orig[,1:50] != pp[,1:50], arr.ind = TRUE).

+0

Спасибо. Это, похоже, работает до тех пор, пока данные будут отсортированы в том же порядке. Есть ли способ указать порядок сортировки при выполнении сравнения? – KDA

+0

Перед сопоставлением вы можете использовать 'order' [https://stat.ethz.ch/R-manual/R-devel/library/base/html/order.html] для сортировки ваших кадров данных по любому столбцу или комбинации столбцов, которые однозначно идентифицируют запись. –

Смежные вопросы