我需要做两个数据帧的笛卡尔积。例如,
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中严重缺乏;