
数据结构
|
169
rbind(df1, df2)
#> x y
#> 1 a 5
#> 2 a 6
#> 3 b 9
#> 4 b 10
rbind 函数要求数据框具有相同的宽度
—
相同的列数和相同的列名。但是,列不必是
相同的
顺序
(order), rbind 会解决这个问题。
最后,这个方法比标题意指的更为广泛。首先,你可以合并两个以上的数据框,因为
rbind 和 cbind 都接受多个参数。其次,你可以将此方法应用于其他数据类型,因为
rbind 和 cbind 也适用于向量、列表和矩阵。
5.27 根据共有列合并数据框
5.27.1 问题
你有两个共享一个相同列的数据框。你需要通过匹配共有列来合并它们的行,使它们成
为一个数据框。
5.27.2 解决方案
我们可以使用 dplyr 包中的 join 函数将数据框连接在一个共有列上。如果只想要在
两个数据框中
共同
出现的行,请使用 inner_join:
inner_join(df1, df2, by = "col")
其中 "col" 是两个数据框中共同出现的列。
如果你希望出现在
任一
数据框中的所有行,请使用 full_join:
full_join(df1, df2, by = "col")
如果你想要 df1 中的所有行,并将 df2 中的所有行匹配 df1,请使用:
left_join(df1, df2, by = "col")
或者从 df2 获取所有记录,并且将 df1 中的记录匹配 df2,请使用:
right_join(df1, df2, by = "col") ...