У меня есть два маленьких фрейма данных, 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]. Конечно, если я не могу сравнить комбинации лекарство / доза, это правильно.