r - 在 R 中合并 data.frame
问题描述
我有一个关于在 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
我想要的是根据以下规则合并的数据框:
- 如果 in 的值
X1
仅 indf1
,则使用 in 的X2
值df1
- 如果 in 的值
X1
在两者中df1
,则df2
使用X2
from的值df2
- 如果 in 的值
X1
仅 indf2
,则使用 in 的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 等的各种方法,但找不到合适的解决方案。任何帮助是极大的赞赏!
解决方案
您可以使用以下内容。它只是行绑定 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)
推荐阅读
- django-rest-framework - dj-rest-auth 与 Django ReST 框架 JSON API 不兼容?
- java - Java 创建目录和子目录(如果不存在)
- angular - Angular:在循环中执行http请求
- java - 出现错误 :: 此表达式的目标类型必须是函数式接口
- python - 为什么 python 程序没有创建任何像素?
- julia - 在 WSL 上向 Julia 添加包
- amazon-s3 - 在中国托管的 S3 中上传/下载文件时出现 OptionRequestDenied 错误
- google-sheets - 有没有办法执行 VLookup 或类似的函数来返回最后一个值?
- image - Flutter 中的图像尺寸
- google-apps-script - 从另一个具有固定列和可变行的工作表中获取单元格的值