Mam dwie małe ramki danych, this_tx
i last_tx
. Są one, w każdym calu, co mogę powiedzieć, całkowicie identyczne. this_tx
== last_tx
wyniki w ramce o identycznych wymiarach, wszystkie TRUE
. this_tx %in% last_tx
, dwa TRUEs
. Inspekcja wizualna, wyraźnie identyczna. Ale gdy zgłoszęCo sprawia, że te dwie ramki danych R nie są identyczne?
identical(this_tx, last_tx)
dostaję FALSE
. Komicznie, nawet
identical(str(this_tx), str(last_tx))
zwróci TRUE
. Jeśli ustawię this_tx <- last_tx
, otrzymam TRUE
.
Co się dzieje? Nie mam najgłębszego zrozumienia wewnętrznej mechaniki R, ale nie mogę znaleźć żadnej różnicy między tymi dwiema ramkami danych. Jeśli jest to istotne, dwie zmienne w ramkach są czynnikami - tymi samymi poziomami, tym samym kodowaniem numerycznym poziomów, obydwoma tylko podzbiorami tej samej oryginalnej ramki danych. Konwertowanie ich na wektory znaków nie pomaga.
Tło (ponieważ nie miałbym nic przeciwko temu): Mam zapisy dotyczące leczenia farmakologicznego pacjentów. Każdy zapis leczenia zasadniczo określa osobę i datę. Druga tabela zawiera zapis dla każdego leku i dawkę podaną podczas konkretnego leczenia (zwykle kilka leków jest podawanych w każdym leczeniu). Próbuję zidentyfikować ciągłe okresy, podczas których osoba brała te same kombinacje leków w tych samych dawkach.
Najlepszym planem, jaki wymyśliłem, jest sprawdzenie leczenia w kolejności chronologicznej. Jeśli kombinacja leków i dawek w leczeniu [i] jest identyczna z kombinacją w leczeniu [i-1], wówczas leczenie [i] jest częścią tej samej fazy co leczenie [i-1]. Oczywiście, jeśli nie mogę porównać kombinacji leków i dawek, to się właśnie okazuje.
Gdybyś mógł zamieścić przykładową parę ramek danych, pomógłby - najlepiej w wyniku uruchomienia 'dput()' na ramkach. – Sharpie
Sharpie wygrywa. Dwie ramki danych nadal nosiły nazwę row.names głównej ramki danych, która pojawia się w dput(), ale nie str(). Sharpie, jeśli napiszesz jako odpowiedź, zaznaczę to najlepiej. –
Jestem naprawdę zaskoczony - zawsze myślałem, że 'str' jest" uświęconą "wersją' dput'. Chyba się okazuje, że to tylko podsumowanie. – Sharpie