2015-05-11 14 views
3

假设我有两个数据帧,DF1和DF2以及它们包含相同的列标题,这样,如何在r中组合两个数据帧,以便生成的数据帧具有指示原始数据帧的新列?

df1 = 
price size 
10 40 

df2 = 
price size 
20 50 

我会以使得所得到的这两个数据帧相结合数据帧, 价格大小起源

10 40 df1 
20 50 df2 

的思考?

+1

首先,您需要在两个data.frames(分别指定“df1”和“df2”)中创建第三个具有正常赋值的变量;那么你可以使用'rbind'来“粘贴”它们。 –

回答

2

最简单的方法,因为我看到它,(如果你有很多的数据集称为df +一些号 - 虽然你可以选择一些其他的正则表达式太)是由全球环境让他们所有和使用do.call/rbind组合

res <- do.call(rbind, mget(ls(pattern = "^df\\d+$"))) 
res 
#  price size 
# df1 10 40 
# df2 20 50 

如果你喜欢的起源是一列而不是行的名称,你可以简单地做

res$origin <- row.names(res) 
1

你也可以做

library(tidyr) 
unnest(mget(paste0('df', 1:2)), origin) 
# origin price size 
#1 df1 10 40 
#2 df2 20 50