在R中水平组合两个数据帧

时间:2019-07-16 20:57:46

标签: r

我想在R中水平组合两个数据帧。

这是我的两个数据帧:

数据框1:

veg     loc    quantity 

carrot  sak    three
pepper  lon    two
tomato  apw    five

数据框2:

seller   quantity  veg

Ben      eleven    eggplant  
Nour     six       potato
Loni     four      zucchini
Ahmed    two       broccoli

我希望结果是一个像这样的数据框:

veg       quantity

carrot    three
pepper    two
tomato    five
eggplant  eleven
potato    six
zucchini  four
broccoli  two

2 个答案:

答案 0 :(得分:2)

该问题说的是“水平”,但是从示例输出中,您的意思似乎是“垂直的”。

现在,假设输入在末尾的注释中可重复显示,则rbind像这样。不使用任何程序包,也不覆盖任何对象。

sel <- c("veg", "quantity")
rbind( df1[sel], df2[sel] )

如果您愿意,可以将下面的代码替换为第一行,以选择sel具有相同结果的公共列。

sel <- intersect(names(df1), names(df2))

注意

Lines1 <- "veg     loc    quantity 
carrot  sak    three
pepper  lon    two
tomato  apw    five"

Lines2 <- "seller   quantity  veg
Ben      eleven    eggplant  
Nour     six       potato
Loni     four      zucchini
Ahmed    two       broccoli"

df1 <- read.table(text = Lines1, header = TRUE, strip.white = TRUE)
df2 <- read.table(text = Lines2, header = TRUE, strip.white = TRUE)

答案 1 :(得分:1)

您可以这样做:

library (tidyverse)

df1 <- df1%>%select(veg, quantity)
df2 <- df2%>%select(veg, quantity)

df3 <- rbind(df1, df2)