我想在存在的数据下添加3列。但是问题是我的第一个数据有10列(id,num,x,xx,xxx,xxx,xxx,.....) 第二个数据只有(id,num,x)3列
我想将第二个数据放在第一个数据中,为此,我想创建7个新列(仅NA
)以使用rbind
。
例如,我有数据:
df1 <- data.frame(id = 1:5, num = 6:10, V1 = 11:15, V2 = 16:20)
df2 <- data.frame(id = 6:10, num = 11:15)
我想获得预期的输出:
id num V1 V2
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
6 6 11 NA NA
7 7 12 NA NA
8 8 13 NA NA
9 9 14 NA NA
10 10 15 NA NA
我尝试创建仅包含NA
的矩阵,并且我在网上进行了研究,但一无所获
答案 0 :(得分:2)
基本的R函数rbind
要求将所有绑定在一起的data.frames具有相同数量的列和名称。这将需要将多余的列添加到具有NA
行的较小数据框中,或者需要另一个允许不匹配列的函数。幸运的是,bind_rows
中有一个名为dplyr
的函数可以准确地做到这一点:
dplyr::bind_rows(df1, df2)
输出:
> rbind(df1, df2)
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
> dplyr::bind_rows(df1, df2)
id num V1 V2
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
6 6 11 NA NA
7 7 12 NA NA
8 8 13 NA NA
9 9 14 NA NA
10 10 15 NA NA
答案 1 :(得分:0)
这是一个外部连接 ---恰好是其中一个ID没有重叠的位置。
merge(df1, df2, all = TRUE)
id num V1 V2
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
6 6 11 NA NA
7 7 12 NA NA
8 8 13 NA NA
9 9 14 NA NA
10 10 15 NA NA
有关上下文和更多选项,请参见how to merge (join) data in R?上的常见问题解答。