在R中附加数据集

Bet*_*eta 1 merge r

我有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个)数据集.程序是什么?

Sve*_*ein 7

我推荐功能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)


seb*_*n-c 5

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)

编辑:组合多个帧的方法详情请点击此处.

结合超过2帧

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)