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
我写了一个很长的函数,但是效率不高而且很耗时。它需要可扩展到庞大的数据集。提前感谢您的帮助
您可以尝试 reshape2
和 aggregate
中的 melt
的组合。熔化数据集后,隔离等于 1
的值以按 Server
和 Epoch
聚合。为了对列中的变量求和,我们使用 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
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
我写了一个很长的函数,但是效率不高而且很耗时。它需要可扩展到庞大的数据集。提前感谢您的帮助
您可以尝试 reshape2
和 aggregate
中的 melt
的组合。熔化数据集后,隔离等于 1
的值以按 Server
和 Epoch
聚合。为了对列中的变量求和,我们使用 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