在R中组合多个数据帧

时间:2015-10-10 06:38:15

标签: r

我有5个数据框(df1df2df3df4df5)。它们都具有相同的列和列名称(NIR数据库)。我想将df1df2合并到df12,然后将df3df4df5合并到df345,最后将df12df345合并到df。 (必须是这两个阶段。)

df12 <- do.call(rbind, list(df1,df2))
df345 <- do.call(rbind, list(df3,df4,df5))
df <- do.call(rbind, list(df12,df345))
newdf <- data.frame(oiltype="olive",nir=df[2:276]);

有了这个,我得到一个列名nir.nir.V4,而我需要它nir.V4

我认为这是由于使用了列表。我想知道是否有任何替代方案可以组合多个数据帧而不必面对这个问题。感谢任何建议。

1 个答案:

答案 0 :(得分:-1)

我有5个data.frame df1,df2,df3,df4,df5具有相同的列和列名称。

> df1
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
> df2
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> df3
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
7          4.6         3.4          1.4         0.3  setosa
8          5.0         3.4          1.5         0.2  setosa
9          4.4         2.9          1.4         0.2  setosa
> df4
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
12          4.8         3.4          1.6         0.2  setosa
> df5
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
13          4.8           3          1.4         0.1  setosa
14          4.3           3          1.1         0.1  setosa
15          5.8           4          1.2         0.2  setosa

用于组合df1和df2

> df12 <- rbind(df1,df2)
> df12
     Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

对于组合df3,df4,df5与上面相同

> df345 <- rbind(df3,df4,df5)
> df345
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
12          4.8         3.4          1.6         0.2  setosa
13          4.8         3.0          1.4         0.1  setosa
14          4.3         3.0          1.1         0.1  setosa
15          5.8         4.0          1.2         0.2  setosa

最后,可以以类似的方式组合新形成的数据帧

> df <- rbind(df12,df345)
> df
     Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
12          4.8         3.4          1.6         0.2  setosa
13          4.8         3.0          1.4         0.1  setosa
14          4.3         3.0          1.1         0.1  setosa
15          5.8         4.0          1.2         0.2  setosa