【发布时间】:2015-02-26 16:02:18
【问题描述】:
例如,假设我想合并 df1 和 df2(见下文)。它们不仅有不同的#s 行,而且还有不同的#s 列。它们还有多个重复的列,以及“销售”列下的重复值。我想做的是按“Sales”(不希望“Sales”下的重复值)和“Date”、“Price”和“SKU”(这些列下的重复值可以)合并,并且添加“PVC”列并填充任何缺失的单元格 w/NA 值。基本上,这是我想要的最终产品:
Date Sales Price SKU PVC
2007/01/02 1 1.29 52648 Q
2007/01/02 2 1.99 48721 N/A
2007/01/02 5 0.55 65897 N/A
2007/01/02 6 5.00 56482 N/A
2007/01/02 10 2.50 46521 N/A
2009/01/02 4 5.99 75677 Z
这样做:
merge(df1,df2,c("Date","Sales","Price","SKU"),all=TRUE)
不起作用,因为它消除了在所有 4 列上不完全匹配的任何行。尝试:
merge(df1,df2,by="Sales",all=TRUE)
不起作用,因为这会使“销售”下共享相同值的行重复。此外,我不希望在合并的数据框中看到像“日期”、“价格”和“SKU”这样的列重复出现(我以“Date.x”、“Date.y”、“价格”结束。 x”、“价格.y”、“SKU.x”、“SKU.y”)。
df1
Date Sales Price SKU
2007/01/02 1 1.29 52648
2007/01/02 2 1.99 48721
2007/01/02 5 0.55 65897
2007/01/02 6 5.00 56482
2007/01/02 10 2.50 46521
df2
Date Sales Price SKU PVC
2007/01/02 1 3.29 52647 Q
2009/01/02 4 5.99 75677 Z
【问题讨论】:
-
能否再添加一个数据集:
merge的理想输出数据集。也就是说,您希望merge()的输出是什么样的? -
@Andrew Taylor,刚刚将其添加到顶部!谢谢!
标签: r merge duplicates