我现在一直是 StackExchange Lurker,但之前在 R 中找到这个问题的运气并不好,所以我为此创建了一个用户名。
基本上我有一个客户和商店的数据集(大约 26 万客户和 300 家商店,大多数客户访问至少 10 家独特的商店),我想看看哪些网站与客户重叠最多(即网站 A 和 B 共享这个许多客户,A 和 C 那么多,......对于所有成对的网站)。
可重现的例子:
begindata<-data.frame(customer_id=c(1,2,3,1,2,3,4,1,4,5), site_visited=c('A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'D', 'D'))
如果可能的话,我希望看到以下内容:
final_table<-data.frame(site_1=c('A', 'A', 'A', 'B', 'B', 'C'), site_2=c('B', 'C', 'D', 'C', 'D', 'D'), number_of_commonalities=c(3, 1,1,1,1,0))
我曾尝试根据 customer_id 将 begindata 加入到自身中,类似这样......
attempted_df<-begindata %>% left_join(begindata, by="customer_id") %>% count(site_visited.x, site_visited.y)
我知道这是多余的(走 A、B、3 的行;B、A、3;以及走 A、A、3 的行)。
但是,由于大小限制,这不能用我的实际数据集(260k 成员和 300 个站点)执行。
任何建议将不胜感激!如果我的帖子很糟糕,也要对我放轻松——我想我已经遵守了规则和建议?