如何解决将两列与一列连接
我正在寻找一种dplyr解决方案,以使用一行将一个数据帧的两列与另一数据帧的一列连接起来。例如:
要合并的数据帧:
df <- tibble(a = 1:5,b = 6:10)
df2 <- tibble(c = 1:10,d = letters[1:10])
所需结果:
df3 <- df %>%
left_join(df2,by = c('a' = 'c')) %>%
rename(d_a = d) %>%
left_join(df2,by = c('b' = 'c')) %>%
rename(d_b = d)
a b d_a d_b
<int> <int> <chr> <chr>
1 1 6 a f
2 2 7 b g
3 3 8 c h
4 4 9 d i
5 5 10 e j
如何使用left-join
一次将a
和b
与c
合并?
我尝试过:
df %>%
left_join(df2,by = c('a' = 'c','b' = 'c'))
解决方法
以长格式获取数据,以便您可以在一个左连接中连接多列
library(dplyr)
library(tidyr)
df %>%
mutate(row = row_number()) %>%
pivot_longer(cols = -row) %>%
left_join(df2,by = c('value' = 'c')) %>%
pivot_wider(names_from = name,values_from = c(value,d)) %>%
select(-row)
# value_a value_b d_a d_b
# <int> <int> <chr> <chr>
#1 1 6 a f
#2 2 7 b g
#3 3 8 c h
#4 4 9 d i
#5 5 10 e j
,
您可以尝试使用left_join()
library(dplyr)
df3 <- df %>%
left_join(df2,by = c("a" = "c")) %>%
left_join(df2,by = c("b" = "c"),suffix = c("_a","_b"))
# a b d_a d_b
# <int> <int> <chr> <chr>
# 1 1 6 a f
# 2 2 7 b g
# 3 3 8 c h
# 4 4 9 d i
# 5 5 10 e j
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。