我有2个数据集:
数据1:
Var1 Var2 Var3 Var4
10 10 2 3
9 2 8 3
6 4 4 8
7 3 10 8
Run Code Online (Sandbox Code Playgroud)
数据2:
Var1 Var5 Var3 Var6
3 6 6 4
1 2 5 1
9 2 2 9
2 6 3 2
Run Code Online (Sandbox Code Playgroud)
现在我想附加这2个数据集
最终数据:
Var1 Var2 Var3 Var4 Var5 Var6
10 10 2 3
9 2 8 3
6 4 4 8
7 3 10 8
3 4 6 6
1 1 2 5
9 9 2 2
2 2 6 3
Run Code Online (Sandbox Code Playgroud)
我不能使用rbind来创建这个数据集.有人可以告诉我创建这个数据集的方法吗?另外,假设我想附加多个(超过2个)数据集.程序是什么?
我推荐功能rbind.fill的的plyr包:
library(plyr)
rbind.fill(Data1, Data2)
# Var1 Var2 Var3 Var4 Var5 Var6
#1 10 10 2 3 NA NA
#2 9 2 8 3 NA NA
#3 6 4 4 8 NA NA
#4 7 3 10 8 NA NA
#5 3 NA 6 NA 6 4
#6 1 NA 5 NA 2 1
#7 9 NA 2 NA 2 9
#8 2 NA 3 NA 6 2
Run Code Online (Sandbox Code Playgroud)
该技术的主要优点是它不限于两个数据帧,但允许组合任意数量的数据帧.
如果仍需要从磁盘读取数据,您可以执行以下操作:
file_list = list.files()
data_list = lapply(file_list, read.table)
data_combined = do.call("rbind.fill", data_list)
Run Code Online (Sandbox Code Playgroud)
merge(Data1, Data2, all=TRUE, sort=FALSE)
Var1 Var3 Var2 Var4 Var5 Var6
1 10 2 10 3 NA NA
2 9 8 2 3 NA NA
3 6 4 4 8 NA NA
4 7 10 3 8 NA NA
5 3 6 NA NA 6 4
6 1 5 NA NA 2 1
7 9 2 NA NA 2 9
8 2 3 NA NA 6 2
Run Code Online (Sandbox Code Playgroud)
编辑:组合多个帧的方法详情请点击此处.
Data3
Var1 Var3 Var5 Var6
1 2 6 4 1
2 10 1 6 1
3 1 6 3 1
4 9 5 5 7
Run Code Online (Sandbox Code Playgroud)
我们需要将您的数据放入一个列表并使用一个名为的好包reshape.
datalist <- list(Data1, Data2, Data3)
library(reshape)
merge_recurse(datalist)
Var1 Var3 Var2 Var4 Var5 Var6
1 10 2 10 3 NA NA
2 9 8 2 3 NA NA
3 6 4 4 8 NA NA
4 7 10 3 8 NA NA
5 3 6 NA NA 6 4
6 1 5 NA NA 2 1
7 9 2 NA NA 2 9
8 2 3 NA NA 6 2
9 2 6 NA NA 4 1
10 10 1 NA NA 6 1
11 1 6 NA NA 3 1
12 9 5 NA NA 5 7
Run Code Online (Sandbox Code Playgroud)