R:两个数据帧的笛卡尔积的任何函数?

时间:2016-08-29 03:23:57

标签: r dataframe cartesian

我需要做两个数据帧的笛卡尔积。例如,

 A = id weight type
     10    20     a
     10    30     b
     25    10     c
 B = date  report
     2007    y
     2008    n
然后C就像做了A和B的笛卡尔积之后

 C =  id weight type  date  report
      10    20     a    2007    y
      10    20     a    2008    n
      10    30     b    2007    y
      10    30     b    2008    n
      25    10     c    2007    y
      25    10     c    2008    n

因为A中的某些ID是相同的,所以我不能使用类似

的方式
C <- merge(A$id,B$date)
C <- merge(C,A,by="id")
C <- merge(C,B,by="date")

这种方式会产生更多行。有人能帮助我离开这里吗?感谢

1 个答案:

答案 0 :(得分:9)

merge(A, B),如果没有列链接这两个,默认情况下应该这样做,不是吗?

来自?merge(强调我的):

  

如果by和.x和by.y的长度为0(长度为零的向量或NULL),则结果r为x和y的笛卡尔乘积,即dim(r)= c(nrow(x)* nrow(y),ncol(x)+ ncol(y))。

不可否认,这需要知道查看?merge。 R中基于上下文的搜索严重缺乏;偶rseek并没有立即提供此信息。