我想在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
答案 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)