如何使用 Tidyverse 在不更改值的情况下将数据框连接到另一个数据框之上

How to join a data frame on top of another without changing values using Tidyverse

我正在处理多个 data.frames,我必须在彼此之上加入,这正是我希望从 tidyverse 的函数 full_join 中得到的说明我有以下数据集

name<-c("AAA","AAA","AAA")
value<-c(1:3)
tag<-c(0,0,0)

part_a<-data.frame(name,value,tag)

name<-c("AAA","AAA","AAA")
value<-c(1:3)
key<-c(1,1,1)

part_b<-data.frame(name,value,key)

我想要的输出是这样的:

name value tag key
AAA 1 0 NA
AAA 2 0 NA
AAA 3 0 NA
AAA 1 NA 1
AAA 2 NA 1
AAA 3 NA 1

但我得到的是:

> full_join(part_a,part_b)
Joining, by = c("name", "value")
  name value tag key
1  AAA     1   0   1
2  AAA     2   0   1
3  AAA     3   0   1

这让我很困惑,因为我认为这个函数试图找到共同的价值,然后聚合其余的数据,但我真正想要的只是把所有 dataframes 放在一起包括它们没有共同点的列,我知道我不能使用 rbind 因为这个函数要求数据帧具有相同的列名,如果你们能帮助我,我将非常感激!

library(dplyr)
part_a |> bind_rows(part_b)

  name value tag key
1  AAA     1   0  NA
2  AAA     2   0  NA
3  AAA     3   0  NA
4  AAA     1  NA   1
5  AAA     2  NA   1
6  AAA     3  NA   1

full_join() 正在合并您的数据框。由于您没有指定要用作标识符的列,因此它使用的是公共字段(即 namevalue)。要简单地组合数据帧,您可以使用 dplyrbind_rows():

result <- bind_rows(part_a, part_b)

请注意,还有一个 bind_cols() 用于将来自多个数据帧的变量(即列)组合成一个数据帧。