将两个数据帧与所有可能的组合相结合

时间:2018-05-25 08:03:50

标签: r dplyr tidyr tidyverse

我有2个数据框 我如何使用tidyr::completetidyverse建立df <-data.frame(a=letters[1:2] ) df1<-data.frame(one=1:2) 之类的内容?

我的数据:

a 1 
b 1
a 2
b 2

预期结果:

click

THX!

3 个答案:

答案 0 :(得分:2)

通过这个特殊的例子,我认为你可以使用合并功能。作为标准,其参数all.x和all.y设置为TRUE,因此它会自动创建所有组合,因为数据帧没有任何共同的变量或值。

df <-data.frame(a=letters[1:10] )
df1<-data.frame(one=1:10)

dfcomb <- merge(df,df1)
dim(dfcomb) 
[1] 100   2 #gives 100 rows and 2 columns

答案 1 :(得分:1)

您可以使用tidyr::crossing

tidyr::crossing(df, df1)

# A tibble: 4 x 2
#  a       one
#  <chr> <int>
#1 a         1
#2 a         2
#3 b         1
#4 b         2

expand_grid

tidyr::expand_grid(df, df1)

答案 2 :(得分:0)

对于您的具体示例,可以使用expand.grid:

expand.grid(df[[1]],df1[[1]])
  Var1 Var2
1    a    1
2    b    1
3    a    2
4    b    2