如何在dplyr中使用bind_rows和bind_cols(附实例)

2,424 阅读2分钟

你可以使用R中dplyr包中的bind_rows()函数,将两个数据框架按行绑定在一起:

bind_rows(df1, df2, df3, ...)

同样,你可以使用dplyr包中的bind_cols()函数,将两个数据框按列绑定在一起:

bind_cols(df1, df2, df3, ...)

下面的例子展示了如何在实践中使用这些函数。

例1:使用bind_rows()

下面的代码显示了如何使用**bind_rows()**函数将三个数据框按照行数绑定在一起:

library(dplyr)

#create data frames
df1 <- data.frame(team=c('A', 'A', 'B', 'B'),
                  points=c(12, 14, 19, 24))


df2 <- data.frame(team=c('A', 'B', 'C', 'C'),
                  points=c(8, 17, 22, 25))

df3 <- data.frame(team=c('A', 'B', 'C', 'C'),
                  assists=c(4, 9, 12, 6))

#row bind together data frames
bind_rows(df1, df2, df3)

   team points assists
1     A     12      NA
2     A     14      NA
3     B     19      NA
4     B     24      NA
5     A      8      NA
6     B     17      NA
7     C     22      NA
8     C     25      NA
9     A     NA       4
10    B     NA       9
11    C     NA      12
12    C     NA       6

请注意,如果数据框架的列名不一致,这个函数会自动用NA来填补缺失值。

例2:使用bind_cols()

下面的代码显示了如何使用**bind_cols()**函数将三个数据框根据它们的列绑定在一起:

library(dplyr)

#create data frames
df1 <- data.frame(team=c('A', 'A', 'B', 'B'),
                  points=c(12, 14, 19, 24))


df2 <- data.frame(team=c('A', 'B', 'C', 'C'),
                  points=c(8, 17, 22, 25))

df3 <- data.frame(team=c('A', 'B', 'C', 'C'),
                  assists=c(4, 9, 12, 6))

#column bind together data frames
bind_cols(df1, df2, df3)

  team points assists steals blocks rebounds
1    A     12       A      8      A        4
2    A     14       B     17      B        9
3    B     19       C     22      C       12
4    B     24       C     25      C        6

请注意,每个数据框的原始列都按照我们在bind_cols()函数中指定的顺序出现在最终的数据框中。

其他资源

下面的教程解释了如何使用基础R中的rbind()cbind()函数将数据框绑定在一起:

下面的教程解释了如何在dplyr中执行其他常用函数: