我有两个具有不同列和不同行大小的数据框
library(tidyverse)
tb1 <- tibble(id= 1:10,
a= 1:10,
b=11:20)
tb2 <- tibble(id= 1:5,
q= 1:5,
z= 11:15)
我可以通过
id
键轻松组合它们
full_join(tb1, tb2, by = "id")
.
# A tibble: 10 x 5
id a b q z
<int> <int> <int> <int> <int>
1 1 1 11 1 11
2 2 2 12 2 12
3 3 3 13 3 13
4 4 4 14 4 14
5 5 5 15 5 15
6 6 6 16 NA NA
7 7 7 17 NA NA
8 8 8 18 NA NA
9 9 9 19 NA NA
10 10 10 20 NA NA
如果我没有带键的列并且我不想在每个数据框中提前创建它,我该如何做同样的事情。
tb1 <- tibble(a= 1:10,
b=11:20)
tb2 <- tibble(q= 1:5,
z= 11:15)
有什么优雅的解决方案吗?没有这么笨重
tb1 %>%
mutate(row = row_number()) %>%
left_join(
tb2 %>% mutate(row = row_number()),
by = "row"
) %>%
select(-row)
尝试
merge
merge(tb1, tb2, all=TRUE, by=0) # |> select(-Row.names)
指定
by=0
合并到 rownames。
Row.names a b q z
1 1 1 11 1 11
2 10 10 20 NA NA
3 2 2 12 2 12
4 3 3 13 3 13
5 4 4 14 4 14
6 5 5 15 5 15
7 6 6 16 NA NA
8 7 7 17 NA NA
9 8 8 18 NA NA
10 9 9 19 NA NA