Что делает эти два фрейма данных R не идентичными? - PullRequest
5 голосов
/ 22 апреля 2010

У меня есть два маленьких фрейма данных, this_tx и last_tx. Они, во всех отношениях, которые я могу сказать, полностью идентичны. this_tx == last_tx приводит к кадру одинаковых размеров, все TRUE. this_tx %in% last_tx, два TRUEs. Осмотрено визуально, четко идентично. Но когда я звоню

identical(this_tx, last_tx)

Я получаю FALSE. Весело, даже

identical(str(this_tx), str(last_tx))

вернет TRUE. Если я установлю this_tx <- last_tx, я получу TRUE.

Что происходит? У меня нет глубокого понимания внутренней механики R, но я не могу найти единой разницы между двумя фреймами данных. Если это уместно, две переменные в кадрах являются обоими факторами - одинаковыми уровнями, одинаковым числовым кодированием для уровней, обе являются только подмножествами одного и того же исходного кадра данных. Преобразование их в символьные векторы не помогает.

Предыстория (потому что я тоже не против, чтобы помочь в этом): У меня есть записи лечения наркомании, которые давались пациентам. Каждая запись о лечении по существу указывает человека и дату. Во второй таблице есть запись для каждого лекарственного средства и дозы, назначаемой во время определенного лечения (обычно, каждому лекарству дают несколько лекарств). Я пытаюсь определить смежные периоды, в течение которых человек принимал одни и те же комбинации лекарств в одних и тех же дозах.

Лучший план, который я придумал, - это проверить лечение в хронологическом порядке. Если комбинация лекарств и доз для лечения [i] идентична комбинации при лечении [i-1], то лечение [i] является частью той же фазы, что и лечение [i-1]. Конечно, если я не могу сравнить комбинации лекарство / доза, это правильно.

Ответы [ 2 ]

7 голосов
/ 22 апреля 2010

Как правило, в этой ситуации полезно попробовать all.equal, который даст вам некоторую информацию о том, почему два объекта не эквивалентны.

6 голосов
/ 22 апреля 2010

Ну, измученный крик "moar specics plz!"в этом случае может победить:

Проверьте вывод dput() и опубликуйте, если это возможно.str() просто суммирует содержимое объекта, в то время как dput() выводит все кровавые подробности в форме, которую можно скопировать и вставить в другой интерпретатор R для восстановления объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...