This question already has answers here:
How to do cross join in R?

(9个答案)


4年前关闭。




我需要做两个数据框的笛卡尔积。例如,
 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(强调我的):



诚然,这确实需要人们知道查看 ?merge 。 R 中严重缺乏基于上下文的搜索;甚至 rseek 也不会立即提供此信息。

关于R:两个数据框的笛卡尔积的功能是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39198078/

10-11 22:30