r - 如何水平连接两个表并匹配 R 中的 2 个不同的列名?
问题描述
我有两个数据框:
数据1:
ID DateTimeUTC
A 12/4/2019 11:30:30 PM
A 12/4/2019 11:30:31 PM
B 12/5/2019 11:31:00 PM
B 12/5/2019 11:31:01 PM
C 12/5/2019 11:31:02 PM
和数据2:
Message DateTimeUTC
A 12/4/2019 11:30:30 PM
A 12/4/2019 11:30:31 PM
B 12/5/2019 11:31:00 PM
B 12/5/2019 11:31:01 PM
我想拥有
ID DateTimeUTC Message DateTimeUTC
A 12/4/2019 11:30:30 PM A 12/4/2019 11:30:30 PM
A 12/4/2019 11:30:31 PM A 12/4/2019 11:30:31 PM
B 12/5/2019 11:31:00 PM B 12/4/2019 11:31:00 PM
B 12/5/2019 11:31:01 PM B 12/4/2019 11:31:01 PM
我希望只显示匹配的 ID 和消息。我执行了内部连接,但它给了我重复项,并且它删除了我的一个列名。
library('dplyr')
inner_join(data1, data2, by = c("ID" = "Message"))
目标:有人可以告诉我如何进行 rbind 以获得上述结果吗?
##pseudo_code:
rbind(data1,data2, order_by ID & Message)
解决方案
实际上,inner_join 的想法是正确的,但问题是不仅要加入“ID”=“Message”,还应该考虑 DateTimeUTC。所以它在以下两个条件下加入;
library(dplyr)
df1 <-
data.frame(
ID = c("A", "A", "B", "B", "C"),
DateTimeUTC = c("12/4/2019 11:30:30 PM", "12/4/2019 11:30:31 PM", "12/5/2019 11:31:00 PM",
"12/5/2019 11:31:01 PM", "12/5/2019 11:31:02 PM"),
stringsAsFactors = FALSE
)
df2 <-
data.frame(
Message = c("A", "A", "B", "B"),
DateTimeUTC = c("12/4/2019 11:30:30 PM", "12/4/2019 11:30:31 PM",
"12/5/2019 11:31:00 PM", "12/5/2019 11:31:01 PM"),
stringsAsFactors = FALSE
)
df1 %>%
inner_join(df2, by = c("ID" = "Message", "DateTimeUTC" = "DateTimeUTC"))
# ID DateTimeUTC
# A 12/4/2019 11:30:30 PM
# A 12/4/2019 11:30:31 PM
# B 12/5/2019 11:31:00 PM
# B 12/5/2019 11:31:01 PM
推荐阅读
- python - 如果 findall 找到搜索模式,则在文件中插入新行
- git - 有没有办法阻止我的本地存储库下载提交历史记录?
- java - 如何使用 ASM 存储动态生成的 java 类的类定义?
- javascript - 使用 php java-script 和 html 创建跟踪器
- azure - 有哪些可能用于 Web 应用程序 (AWS) 的无服务器系统架构以降低成本
- 8thwall-xr - 如何将物体放在检测到的表面上?
- python - django model_to_dict 包括指向模型的外键
- testing - 使用 Hamcrest 测试一个数组是否包含另一个数组中的元素
- c# - 如何根据列从数据库中求和值,例如,基于不同部门列表的部门的工资总和
- php - Laravel 自定义请求标头未填充