我有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)
这可能对您有所帮助:
您可以rbind.fill在plyr包中使用(即使列名不相同也可以使用)
以下是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)
为了提高性能,请尝试rbindlist从data.table包中获取,例如。
rbindlist(list(DF1,DF2,DF3))
Run Code Online (Sandbox Code Playgroud)