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



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

 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

作为一些id在A中是相同的,所以我不能使用像

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

这种方式将生成更多行。有人能帮我出去吗?由于

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

摘自?merge(强调我的):

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

无可否认,这确实需要一个人知道去看?merge。基于上下文的搜索在R中严重缺乏;

相关内容

  • 没有找到相关文章

最新更新