6

我有两个小数据框,this_txlast_tx. 在我能说的每一个方面,它们都是完全相同的。 this_tx==last_tx产生一个尺寸相同的框架, all 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]处于同一阶段。当然,如果我不能比较药物/剂量组合,那就对了。

4

2 回答 2

9

通常,在这种情况下,尝试一下all.equal它会给你一些关于为什么两个对象不等价的信息是很有用的。

于 2010-04-22T01:33:19.353 回答
7

好吧,“请详细说明一下!” 在这种情况下可能会赢:

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

于 2010-04-22T01:13:29.060 回答