无需密钥即可合并两个不同大小的数据框

问题描述 投票:0回答:1

我有两个具有不同列和不同行大小的数据框

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)
r join dplyr merge tidyverse
1个回答
0
投票

尝试

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
© www.soinside.com 2019 - 2024. All rights reserved.