是什么让这两个R数据帧不相同?

时间:2010-04-22 00:53:55

标签: r dataframe comparison

我有两个小数据框this_txlast_tx。从各方面来说,它们都是完全相同的。 this_tx == last_tx会生成相同维度的框架,全部为TRUEthis_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 个答案:

答案 0 :(得分:7)

通常,在这种情况下,尝试all.equal会很有用,它会为您提供有关两个对象不相等的原因的信息。

答案 1 :(得分:6)

嗯,“moar specifics plz!”的疲惫的叫声!在这种情况下可能获胜:

检查dput()的输出并尽可能发布。 str()只是总结了一个对象的内容,而dput()以一种可以复制并粘贴到另一个R解释器中的形式转储所有血腥细节以重新生成该对象。