投射交易数据

时间:2017-11-20 16:27:22

标签: r dplyr reshape reshape2

我需要if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']) die('Permission denied.'); 我的数据:

cast

进入这种汇总形式:

> data.frame(transactionID= c("941214", "941214", "140668","945320","945320","945320"), productCategory = c("A","B","C","B","C","A"))
  transactionID productCategory
1        941214               A
2        941214               B
3        140668               C
4        945320               B
5        945320               C
6        945320               A

productCategory A.purchase B.purchase C.purchase A 2 2 1 B 2 2 1 C 1 1 2 列和A.purchase,我需要计算产品A出现的交易。 在row.number = 1列和B.purchase,我需要计算产品B与A一起出现的交易。

我试过这个:row.number = 1。但是,在交易中,产品B与产品A在一起时不计算在内。

SOLUTION:

dcast(data, productCategory~productCategory)

1 个答案:

答案 0 :(得分:0)

以下是dplyrtidyr如何做到这一点。我首先group_by transactionID,然后是expand这些组中的所有可能组合。此外,我认为您的预期结果有误。 B和C只出现在一个订单中。所以第2行的最后一个元素应该是1。

library(dplyr);library(tidyr)

data %>%
  group_by(transactionID)%>%
  expand(productCategory,productCategory)%>% 
  dcast(productCategory~productCategory1)

  productCategory A B C
1               A 2 2 1
2               B 2 2 1
3               C 1 1 2