1
   Server  Epoch      A B C D E
    1 C301 1420100400 1 0 1 0 0
    2 C301 1420100700 0 0 0 0 0
    3 C301 1420152000 0 1 0 0 0
    4 C301 1420238100 1 1 1 0 0
    5 C301 1420324500 1 1 1 1 1

我需要帮助将上面的矩阵放入篮子或交易形式(与包 arulesSequences 中的 cSpade 算法一起使用),以便矩阵中的每个“1”都是交易项。即,输出看起来像这样:

Server    Epoch       #items    Items
C301      1420100400  2         A C
C301      1420152000  1         B
C301      1420238100  3         A B C
C301      1420324500  5         A B C D E

我写了一个很长的函数,但它不是很有效而且很耗时。它需要跨庞大的数据集进行扩展。提前感谢您的帮助

4

1 回答 1

1

您可以尝试组合meltfromreshape2aggregate。融合数据集后,隔离等于1聚合的值ServerEpoch。总结我们使用的列中的变量length,以及toString项目列表:

library(reshape2)
m <- melt(df1, c("Server", "Epoch"))
aggregate(variable~Server+Epoch, m[m$value==1,], FUN=function(x) cbind(length(x), toString(x)))
# Server      Epoch variable.1    variable.2
# 1   C301 1420100400          2          A, C
# 2   C301 1420152000          1             B
# 3   C301 1420238100          3       A, B, C
# 4   C301 1420324500          5 A, B, C, D, E
于 2016-01-04T16:57:03.957 回答