rbind多个数据集

use*_*783 31 r

我有3个数据集,我想在一起.我已将我的列重命名为相同:

names(DF1) <- c("A", "B", "C")
names(DF2) <- c("A", "B", "C")
names(DF3) <- c("A", "B", "C")
Run Code Online (Sandbox Code Playgroud)

他们各自得到不同的观察数(分别为34,54,23)

但是,当我尝试使用rbind函数时,它会返回错误:

total <- rbind(DF1, DF2, DF3)
Run Code Online (Sandbox Code Playgroud)

match.names(clabs,names(xi))出错:名称与以前的名称不匹配

从其他已回答的问题中,由于列名不同而导致错误,但我已检查并重新检查它们已重命名为相同.

我想得到一个总数据集,总共有111个列标题的观察结果.我是R的初学者,所以很多其他问题的答案都没有我.是否有人能够以外行的方式回答这个问题?

Chi*_*til 59

您可以这样使用do.call:

do.call("rbind", list(DF1, DF2, DF3))
Run Code Online (Sandbox Code Playgroud)

请注意,第二个参数do.call是列表.


Jot*_* eN 11

tidyverse方法是使用bind_rows()dplyr包:

bind_rows(DF1, DF2, DF3)
Run Code Online (Sandbox Code Playgroud)


Met*_*ics 6

这可能对您有所帮助:

您可以rbind.fillplyr包中使用(即使列名不相同也可以使用)

以下是optmatch包中数据集的示例R

library(optmatch)
 library(plyr)
data(nuclearplants)
x<-nuclearplants
data1<-as.data.frame(x$cost)
data1<-data1[1:20,]
data1<-as.data.frame(data1)
data2<-as.data.frame(x$date)
rbind.fill(data1,data2)

data1    x$date
1  460.05     NA
2  452.99     NA
3  443.22     NA
4  652.32     NA
5  642.23     NA
6  345.39     NA
7  272.37     NA
8  317.21     NA
9  457.12     NA
10 690.19     NA
11 350.63     NA
12 402.59     NA
13 412.18     NA
14 495.58     NA
15 394.36     NA
16 423.32     NA
17 712.27     NA
18 289.66     NA
19 881.24     NA
20 490.88     NA
21     NA  68.58
22     NA  67.33
23     NA  67.33
24     NA  68.00
25     NA  68.00
26     NA  67.92
27     NA  68.17
28     NA  68.42
29     NA  68.42
30     NA  68.33
31     NA  68.58
32     NA  68.75
33     NA  68.42
34     NA  68.92
35     NA  68.92
36     NA  68.42
37     NA  69.50
38     NA  68.42
39     NA  69.17
40     NA  68.92
41     NA  68.75
42     NA  70.92
43     NA  69.67
44     NA  70.08
45     NA  70.42
46     NA  71.08
47     NA  67.25
48     NA  67.17
49     NA  67.83
50     NA  67.83
51     NA  67.25
52     NA  67.83
Run Code Online (Sandbox Code Playgroud)


dpe*_*pel 6

为了提高性能,请尝试rbindlistdata.table包中获取,例如。

rbindlist(list(DF1,DF2,DF3))
Run Code Online (Sandbox Code Playgroud)