Что делает эти два кадра данных R не идентичными?

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

identical(this_tx, last_tx)

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

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

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

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

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

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

6
задан Brian Tompsett - 汤莱恩 3 December 2015 в 19:00
поделиться

2 ответа

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

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

7
ответ дан 8 December 2019 в 15:59
поделиться

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

8
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: