R - 需要帮助将矩阵放入篮子或交易形式

R -need help putting matrix into basket or transaction form

   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

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

您可以尝试 reshape2aggregate 中的 melt 的组合。熔化数据集后,隔离等于 1 的值以按 ServerEpoch 聚合。为了对列中的变量求和,我们使用 lengthtoString 作为项目列表:

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