R自带的对数据框添加新的行或列函数为cbind()和rbind(),对应于dplyr包的bind_cols()和bind_rows()。使用这两个函数要求数据能很好的对应。
构建数据框
代码语言:javascript复制> df1<-data.frame(x=c("a","b","c"),y=1:3)
> df2<-data.frame(z=c("B","D","H"),g=c(2,5,3))
> df3<-data.frame(x=c("g","b"),y=c(2,5))
代码语言:javascript复制> df1
x y
1 a 1
2 b 2
3 c 3
代码语言:javascript复制> df2
z g
1 B 2
2 D 5
3 H 3
代码语言:javascript复制> df3
x y
1 g 2
2 b 5
按行合并
代码语言:javascript复制df_rbind<-bind_rows(df1,df3)
代码语言:javascript复制> df_rbind
x y
1 a 1
2 b 2
3 c 3
4 g 2
5 b 5
按列合并
代码语言:javascript复制> df_colbind<-bind_cols(df1,df2)
> df_colbind
x y z g
1 a 1 B 2
2 b 2 D 5
3 c 3 H 3
bind_rows/bind_cols()还可以合并列表
前提是两个列表结构一样,比如按行bind则要求列数一样。
代码语言:javascript复制 f<-split(starwars, starwars$homeworld) #得到一系列列表
代码语言:javascript复制bind_rows(f) 合并list