首页 > 解决方案 > 如何在R中将两帧合并为一帧

问题描述

我有两个data.frame,第一个是日期框架,第二个是城市框架,我正在尝试将两个框架合并为一个。

日期范围:

date
2018/7/7
2018/7/8
2018/7/9

城市框架:

area
beijing
shanghai
guangzhou

我想要的结果是:

date             area
2018/7/7      beijing
2018/7/7      shanghai 
2018/7/7      guangzhou 
2018/7/8      beijing
2018/7/8      shanghai 
2018/7/8      guangzhou 
2018/7/9      beijing
2018/7/9      shanghai 
2018/7/9      guangzhou 

提前致谢!

标签: rmerge

解决方案


我们可以expand.grid在基础 R中使用

expand.grid(df1$date, df2$area)

crossingtidyr

tidyr::crossing(df1, df2)

#   date     area     
#  <fct>    <fct>    
#1 2018/7/7 beijing  
#2 2018/7/7 guangzhou
#3 2018/7/7 shanghai 
#4 2018/7/8 beijing  
#5 2018/7/8 guangzhou
#6 2018/7/8 shanghai 
#7 2018/7/9 beijing  
#8 2018/7/9 guangzhou
#9 2018/7/9 shanghai 

数据

df1 <- structure(list(date = structure(1:3, .Label = c("2018/7/7", "2018/7/8", 
"2018/7/9"), class = "factor")), class = "data.frame", row.names = c(NA, -3L))

df2 <- structure(list(area = structure(c(1L, 3L, 2L), .Label = c("beijing", 
"guangzhou", "shanghai"), class = "factor")), class = "data.frame", 
row.names = c(NA, -3L))

推荐阅读