Ho due piccoli telegrammi di dati, this_tx
e last_tx
. Sono, in ogni modo che posso dire, completamente identici. this_tx
== last_tx
restituisce una cornice di dimensioni identiche, tutte TRUE
. this_tx %in% last_tx
, due TRUEs
. Ispezionato visivamente, chiaramente identico. Ma quando chiamoCosa rende questi due frame di dati R non identici?
identical(this_tx, last_tx)
ho un FALSE
. Esilarante, anche
identical(str(this_tx), str(last_tx))
restituirà un TRUE
. Se imposto lo this_tx <- last_tx
, riceverò uno TRUE
.
Che cosa sta succedendo? Non ho la più profonda comprensione della meccanica interna di R, ma non riesco a trovare una sola differenza tra i due frame di dati. Se è rilevante, le due variabili nei frame sono entrambi fattori: stessi livelli, stessa codifica numerica per i livelli, entrambi solo sottoinsiemi dello stesso frame di dati originale. Convertirli in vettori di caratteri non aiuta.
Sfondo (perché non mi dispiacerebbe nemmeno un aiuto su questo): ho registrazioni di trattamenti farmacologici dati ai pazienti. Ogni record di trattamento specifica essenzialmente una persona e una data. Una seconda tabella ha un record per ogni farmaco e dose somministrata durante un particolare trattamento (di solito, ad ogni trattamento vengono somministrati alcuni farmaci). Sto cercando di identificare periodi contigui durante i quali la persona stava prendendo le stesse combinazioni di farmaci alle stesse dosi.
Il piano migliore che ho trovato è quello di controllare i trattamenti in ordine cronologico. Se la combinazione di farmaci e dosi per il trattamento [i] è identica alla combinazione al trattamento [i-1], allora il trattamento [i] è una parte della stessa fase del trattamento [i-1]. Certo, se non riesco a confrontare le combinazioni farmaco/dose, è chiaro.
Se si potesse pubblicare una coppia di esempi di frame di dati, sarebbe di aiuto, preferibilmente come risultato dell'esecuzione di 'dput()' sui frame. – Sharpie
Sharpie vince. I due frame di dati trasportavano ancora i nomi row.nome del frame dati madre, che compare in un dput() ma non in str(). Sharpie, se pubblichi una risposta, la segnerò meglio. –
Sono davvero sorpreso, ho sempre pensato che 'str' fosse una versione" prettificata "di' dput'. Credo che sia solo un riassunto. – Sharpie