【发布时间】:2010-04-22 00:53:54
【问题描述】:
我有两个小数据框,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]处于同一阶段。当然,如果我不能比较药物/剂量组合,那就对了。
【问题讨论】:
-
如果您可以发布一对示例数据帧,这将有所帮助 - 最好是在帧上运行
dput()的结果。 -
Sharpie 获胜。这两个数据框仍然带有母数据框的 row.names,它显示在 dput() 中,但没有显示在 str() 中。 Sharpie,如果您作为答案发布,我会标记为最佳。
-
我真的很惊讶——我一直认为
str是dput的“美化”版本。猜猜原来这只是一个总结。
标签: r dataframe comparison