我有一个关于在 R 中使用 data.frame 的特定合并类型的问题(发现了很多类似的问题,但无法解决我的特定问题)
假设我有两个数据框,每个数据框有两列 X1、X2:
df1 =
X1 X2
1 '01.01.2000' 4
2 '01.01.2001' 5
3 '01.01.2002' 6
df2 =
X1 X2
1 '01.01.2002' 8
2 '01.01.2003' 9
3 '01.01.2004' 10
我想要的是根据以下规则合并的数据框:
- 如果
X1
中的值仅在df1
, 使用X2
的值在df1
- 如果
X1
中的值在两个df1
和df2
使用X2
的值来自df2
- 如果
X1
中的值仅在df2
, 使用X2
的值在df2
对于 df1
和 df2
以上,这意味着:
dfMerged =
X1 X2
1 '01.01.2000' 4
2 '01.01.2001' 5
3 '01.01.2002' 8
4 '01.01.2003' 9
5 '01.01.2004' 10
目前,我使用的解决方案非常慢,先合并,然后遍历所有行。还尝试了使用 dplyr::Union 等的各种方法,但找不到合适的解决方案。 非常感谢任何帮助!
最佳答案
您可以使用以下内容。它只是行绑定(bind) data.frames 并且在重复的情况下(基于 X1)df1 的行将被删除。
library(dplyr)
df1 <- data.frame(X1 = c("01.01.2000", "01.01.2001", "01.01.2002"),
X2 = c(4, 5, 6), stringsAsFactors = F)
df2 <- data.frame(X1 = c("01.01.2002", "01.01.2003", "01.01.2004"),
X2 = c(8, 9, 10), stringsAsFactors = F)
dfMerged <- bind_rows(df2, df1) %>%
distinct(X1, .keep_all = TRUE) %>%
arrange(X1, X2)
关于r - 在 R 中合并 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035406/