【发布时间】:2016-05-26 04:42:16
【问题描述】:
library(dplyr)
cust_time<-data.frame(cid=c("c1","c2","c3","c4","c5"),ts=c(2,7,11,13,17))
#I want to do a cross join on self, preferable in dplyr else base package is Ok
#But w/o renaming header names
#Currently I have to create a duplicate cust_time to do this.
cust_time.1<-rename(cust_time,cid1=cid,ts1=ts)
merge(cust_time,cust_time.1,by=NULL)
#Later I will want to do cross join within the grouped region
cust_time <-mutate(cust_time,ts.bucket=ts%/%10)
#If using duplicate tables, not sure, how to do the below
#group_by(cust_time,ts.bucket) %>%
#do cross join within this bucket
基本上,我想在表上进行交叉自连接,但由于我无法使用 dplyr 解决方案,所以我使用了基本包。但这需要我重命名所有列。但是,我后来希望能够在分组级别进行交叉连接,这就是我遇到的问题。
任何帮助表示赞赏。
【问题讨论】:
-
cust_time中没有ts.bucket -
你可以试试
do.call(data.table::CJ, cust_time) -
@DavidArenburg,这只是
expand.grid(cust_time),不是吗? -
@docendodiscimus 是的,但速度快了无数倍......或者
tidyr::complete(cust_time, cid, ts),如果我们已经进入它的话...... -
@DavidArenburg,我知道。我的意思是,它与 OP 用他的
merge创建的输出不对应