【发布时间】:2014-10-08 13:55:24
【问题描述】:
我是 R 的初学者,所以如果在其他地方提出问题,我提前道歉。这是我的问题:
我有两个数据框 df1 和 df2,它们的行数和列数不同。这两个框架只有一个共同的变量(列),称为“customer_no”。我希望合并的框架仅根据“customer_no”和 df2 中的行匹配记录。两个 data.frames 对于每个 customer_no 都有多行。
我尝试了以下方法:
merged.df <- (df1, df2, by="customer_no",all.y=TRUE)
问题在于,这会将 df1 的值分配给 df2,而它应该为空。我的问题是:
1) 如何告诉命令将不匹配的列留空? 2)如何从合并文件中看到哪一行来自哪个df?我想如果我解决了上述问题,这应该很容易通过空列看到。
我的命令中遗漏了一些东西,但不知道是什么。如果问题已在其他地方得到解答,您是否仍然愿意在这里为 R 初学者用英语重新表述它?
谢谢!
数据示例:
df1:
customer_no country year
10 UK 2001
10 UK 2002
10 UK 2003
20 US 2007
30 AU 2006
df2:
customer_no income
10 700
10 800
10 900
30 1000
合并后的文件应如下所示:
merged.df:
customer_no income country year
10 UK 2001
10 UK 2002
10 UK 2003
10 700
10 800
10 900
30 AU 2006
30 1000
所以: 它将所有列放在一起,它根据相同的 customer_no 在 df1 的最后一个之后添加 df2 的值,并且仅匹配来自 df2 的 customer_no(merged.df 没有 customer_no 20)。此外,它还会将所有其他单元格留空。
在 STATA 中我使用 append 但在 R 中不确定...也许加入?
谢谢!!
【问题讨论】:
-
添加数据。希望它足够清楚......感谢您的帮助!
-
这看起来更像是一个 rbind 而不是一个合并/加入,美国条目退出有什么原因吗?
-
DMT,是的,原因是它不在 df2 中。合并的 df 排除了仅在 df1 中(不在 df2 中)的值。