我需要做两个数据帧的笛卡尔积。例如,
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")
这种方式会产生更多行。有人能帮助我离开这里吗?感谢
答案 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并没有立即提供此信息。