9

I am looking to use the arulesSequences package in R. However, I have no idea as to how to coerce my data frame into an object that can leverage this package.

Here is a toy dataset that replicates my data structure:

ids <- c(rep("X", 5), rep("Y", 5), rep("Z", 5))
seq <- rep(1:5,3)
val <- sample(LETTERS, 15, replace=T)
df <- data.frame(ids, seq, val)
df

   ids seq val
1    X   1   T
2    X   2   H
3    X   3   V
4    X   4   A
5    X   5   X
6    Y   1   D
7    Y   2   B
8    Y   3   A
9    Y   4   D
10   Y   5   P
11   Z   1   Q
12   Z   2   R
13   Z   3   W
14   Z   4   W
15   Z   5   P

Any help will be greatly appreciated.

4

6 回答 6

1

通过使用 read_baskets:

    read_baskets(con  = filePath.txt,
      sep = " ",
      info = c("sequenceID","eventID","SIZE"))

这实际上意味着将创建的数据导出到文本文件并通过 read_baskets 重新导入。info 参数定义包含 sequenceID、eventID 和可选事件大小列的第一列。

于 2015-03-18T09:25:23.440 回答
1

因子数据框:

df_fact = data.frame(lapply(df,as.factor))

构建“交易”数据:

df_trans = as(df_fact, 'transactions')

测试它:

itemFrequencyPlot(df_trans, support = 0.1, cex.names=0.8)
于 2012-10-23T02:03:36.647 回答
1

它为我添加了一个本质上“订单”列,列出了订单排名而不是时间价值。您只需要在命名约定中非常具体。尝试命名“group”或“ordered basket #”变量sequenceID,并调用ranking 或ordering eventID。

帮助我的另一件事(让我挠了很长时间)是 read_baskets() 似乎需要我指定

read_baskets(con  = filePath.txt, sep = " ", info = c("sequenceID","eventID","SIZE"))

尽管帮助函数使 c() 细节看起来像一个可选的标题,但它不是。我似乎需要从我的文件中删除标题并在 read_baskets() 命令中指定它,否则我会遇到问题。

于 2016-01-14T12:23:25.357 回答
0

您必须首先将您的项目更改为交易,所以只需强制项目列
trans = as(df[,'val'], "transactions")

然后您可以将信息添加到您的交易对象

trans@itemsetInfo$transactionID = NULL trans@itemsetInfo$sequenceID = df$ids trans@itemsetInfo$eventID = df$seq

于 2017-06-21T13:40:43.937 回答
0

对我来说,最好的方法不是使用数据框,而是将数据拆分为单个数据,而不是转换为事务。

 eh$cost<-split(eh$cost$val ,eh$cost$id)
 eh$cost1<- as(eh$cost,"transactions")
于 2015-08-27T17:53:17.187 回答
0
df <- df %>% arrange(id,seq) %>% summarise(size=n(), items=list(val))

然后写入txt(本教程还建议在数据争吵后写入然后用read_basket函数读取)

df$items <- as.character(df$items)
write.table(df, file = "trans.txt", sep = " ", row.names = FALSE, col.names = FALSE)

读取文件并检查

x <- read_baskets("trans.txt", sep = " ", info = c("sequenceID","eventID","SIZE"))
as(x, "data.frame")
于 2021-04-12T12:48:02.440 回答