【发布时间】:2016-03-14 08:55:25
【问题描述】:
我有两个数据集(data2012 和 data2013),它们共享一些同名的行 (ID) 和列(个体特征、数字和公制)。 Data2012 在 data2013 具有 NA 的行中具有值,反之亦然。
如果行名(ID)和列名(个体特征)相同,我想用 data2013 中的相应值替换 data2012 中的 NA。如果 data2012 有 NA 并且 data2013 有值,我只想用 data2013 替换 data2012。
(由于两个数据集有超过 200 个相同名称的列,我无法在代码中单独列出每一列。此外,列的顺序也不相同。我需要一个代码来利用列和行 - 需要替换的值 - 具有完全相同的名称。)
我理想的最终产品: 一个数据集,每个 ID(行)都有一些来自 data2012 的特征(列),一些来自 data2013 和一些剩余的 NA(如果两个数据集都没有相应的值)。
data2012
x2 x4 x5 x6 x7 x9
id1 NA NA 2 NA 4 NA
id2 1 NA NA NA NA 1
id5 NA 3 5 NA NA NA
id6 NA NA NA NA NA NA
data2013(在 id2 和 id6 中有额外信息)
x2 x4 x5 x7
id2 NA NA 4 NA
id3 1 NA 2 NA
id4 NA 9 NA 5
id6 1 NA 2 8
理想的最终产品
x2 x4 x5 x6 x7 x9
id1 NA NA 2 NA 4 NA
id2 1 NA 4 NA NA 1
id5 NA 3 5 NA NA NA
id6 1 NA 2 NA 8 NA
我希望你们能帮助我。谢谢!
【问题讨论】:
-
分享数据,而不是描述它。
-
使用
dput(head(data2012))和dput(head(data2013))的输出编辑您的问题(或至少有足够的数据来重现您的问题) -
使用
match匹配两个数据集中的行名/列名以及is.na将一个数据集中的NA 值替换为另一个。 -
您好,感谢您的快速回复。我刚刚添加了一些数据,希望能让我的问题/问题更清楚。
-
@mtoto:我刚刚添加了一些数据,对你有帮助吗?