如何将数据帧转换为可用的格式,以便在R中进行序列挖掘?

如何将数据帧转换为可用的格式,以便在R中进行序列挖掘?,r,sequence,arules,R,Sequence,Arules,我想在R中进行序列分析,并试图将我的数据转换为arulesSequences包的可用形式 library(tidyverse) library(arules) library(arulesSequences) df <- data_frame(personID = c(1, 1, 2, 2, 2), eventID = c(100, 101, 102, 103, 104), site = c("google", "facebook",

我想在R中进行序列分析,并试图将我的数据转换为arulesSequences包的可用形式

library(tidyverse)
library(arules)
library(arulesSequences)

df <- data_frame(personID = c(1, 1, 2, 2, 2),
             eventID = c(100, 101, 102, 103, 104),
             site = c("google", "facebook", "facebook", "askjeeves", "stackoverflow"),
             sequence = c(1, 2, 1, 2, 3))
df.trans <- as(df, "transactions")
transactionInfo(df.trans)$sequenceID <- df$sequence
transactionInfo(df.trans)$eventID <- df$eventID
seq <- cspade(df.trans, parameter = list(support = 0.4), control = list(verbose = TRUE))
但是,如果将列转换为因子,则会出现另一个错误:

df <- data_frame(personID = c(1, 1, 2, 2, 2),
             eventID = c(100, 101, 102, 103, 104),
             site = c("google", "facebook", "facebook", "askjeeves", "stackoverflow"),
             sequence = c(1, 2, 1, 2, 3))

df <- as.data.frame(lapply(df, as.factor))
df.trans <- as(df, "transactions")
transactionInfo(df.trans)$sequenceID <- df$sequence
transactionInfo(df.trans)$eventID <- df$eventID
seq <- cspade(df.trans, parameter = list(support = 0.4), control = list(verbose = TRUE))

Error in asMethod(object) :
In makebin(data, file) : 'eventID' is a factor
df只有实际项目(在您的案例中为“站点”)进入交易。总是检查你的中间结果,以确保它看起来是正确的。序列挖掘所需的事务类型如
所述?cspade

library("arulesSequences")
df <- data.frame(personID = c(1, 1, 2, 2, 2),
             eventID = c(100, 101, 102, 103, 104),
             site = c("google", "facebook", "facebook", "askjeeves", "stackoverflow"),
             sequence = c(1, 2, 1, 2, 3))

# convert site into itemsets and add sequence and event ids
df.trans <- as(df[,"site", drop = FALSE], "transactions")
transactionInfo(df.trans)$sequenceID <- df$sequence
transactionInfo(df.trans)$eventID <- df$eventID
inspect(df.trans)

# sort by sequenceID
df.trans <- df.trans[order(transactionInfo(df.trans)$sequenceID),]
inspect(df.trans)

# mine sequences
seq <- cspade(df.trans, parameter = list(support = 0.2), 
              control = list(verbose = TRUE))
inspect(seq)
library(“arulesSequences”)

df还有一个问题——有了这个玩具数据集,cspade运行得很快。对于多达200行的数据集也是如此。但是一个500+的数据集需要更长的时间,在我的实际数据集(~3000)的情况下,cspade会消耗所有可用内存,而且永远不会完成。有什么建议吗?也许你需要增加支持?@MichaelHahsler:嗨!这是一个很好的解释。但是,这些项目正在变成{site=“…”}。如何摆脱“site=”部分?@IU5er:您可以使用
itemLabels(df.trans)@prayay您可以这样做:
itemLabels(df.trans)
library("arulesSequences")
df <- data.frame(personID = c(1, 1, 2, 2, 2),
             eventID = c(100, 101, 102, 103, 104),
             site = c("google", "facebook", "facebook", "askjeeves", "stackoverflow"),
             sequence = c(1, 2, 1, 2, 3))

# convert site into itemsets and add sequence and event ids
df.trans <- as(df[,"site", drop = FALSE], "transactions")
transactionInfo(df.trans)$sequenceID <- df$sequence
transactionInfo(df.trans)$eventID <- df$eventID
inspect(df.trans)

# sort by sequenceID
df.trans <- df.trans[order(transactionInfo(df.trans)$sequenceID),]
inspect(df.trans)

# mine sequences
seq <- cspade(df.trans, parameter = list(support = 0.2), 
              control = list(verbose = TRUE))
inspect(seq)