42

一緒に rbind したい 3 つのデータセットがあります。列の名前を同じになるように変更しました。

names(DF1) <- c("A", "B", "C")
names(DF2) <- c("A", "B", "C")
names(DF3) <- c("A", "B", "C")

それぞれ異なる数の観測値を取得しています (それぞれ 34、54、23)。

ただし、rbind 関数を使用しようとすると、次のエラーが返されます。

total <- rbind(DF1, DF2, DF3)

match.names(clabs, names(xi)) のエラー: 名前が以前の名前と一致しません

他の回答された質問から、列の名前が異なるためにエラーが発生するはずですが、同じ名前に変更されていることを確認して再確認しました。

列のタイトルが付けられた合計 111 個の観測データを含む合計データセットを作成したいと考えています。私はRの初心者なので、他の質問からの答えの多くは私を逃してしまいます. 誰でもこれを素人の言葉で答えることができますか?

4

4 に答える 4

75

do.call次のように使用できます。

do.call("rbind", list(DF1, DF2, DF3))

の 2 番目の引数do.callはリストであることに注意してください。

于 2013-04-22T06:01:03.773 に答える
14

tidyverseアプローチは、dplyrパッケージから使用することです。bind_rows()

bind_rows(DF1, DF2, DF3)
于 2019-10-22T12:12:39.023 に答える
6

これはあなたを助けるかもしれません:

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
于 2013-04-22T04:04:29.007 に答える