【发布时间】:2014-05-28 00:10:09
【问题描述】:
我正在尝试组合来自多个数据帧的信息。假设我有一个名为“master”的主数据框,关于一堆汽车的信息。主数据框具有所有可能的 ID。然后假设我有 2 个其他数据框,每个数据框都有一些 id 和汽车的颜色,但不是全部。我想把汽车的所有颜色,对应于它们的 ID,放在现有的 Master 数据框中。
主 df 看起来像这样:
id year
4D 2005
5A 2003
7T 1999
8Q 2001
3G 1998
6N 2009
2B 2013
df1 看起来像这样:
id color
5A black
7T green
8Q gold
4D white
df2 看起来像这样:
id color
5A NA
6N purple
3G NA
2B orange
这是制作 4 个数据框的代码:
master <- data.frame(id = c("4D", "5A", "7T", "8Q", "3G", "6N", "2B"), year=c(2005,2003,1999,2001,1998,2009,2013))
df1 <- data.frame(id=c("5A", "7T", "8Q", "4D"), color=c("black", "green", "gold", "white"))
df2 <- data.frame(id=c("5A", "6N", "3G", "2B"), color=c(NA,"purple", NA, "orange"))
我希望最终的主数据框如下所示:
id year color
4D 2005 white
5A 2003 black
7T 1999 green
8Q 2001 gold
3G 1998 NA
6N 2009 purple
2B 2013 orange
如果同一 ID 的一个数据框中有值,而另一个数据框中有 NA(即:ID 5A 在 df1 中为“黑色”,但在 df2 中为 NA),则该值应存在于电子表格中。
有什么想法吗?我查看了合并和堆栈函数,但我认为这些不是解决方法?
【问题讨论】:
-
你的第 6 行正确吗? 6N-2009-NA。为什么是北美?
-
这只是我正在处理的现实问题的一个例子。在某些表中存在 NA 值,即使在另一个表中存在相同 ID 的实际值。
-
带有
6N的ID 在最终的主data.frame 中应该是“紫色”,尽管df2具有6N/purple组合。 -
而4D只有白色
-
好吧,你不应该在那里任意添加值。您应该提供准确的预期输出。