【问题标题】:how to convert data.frame to transactions for arules如何将 data.frame 转换为规则的事务
【发布时间】:2013-06-26 06:56:34
【问题描述】:

我从一个 csv 文件中读取数据,数据有 3 列,一列是交易 ID,另外两列是产品和产品类别。我需要将其转换为事务才能使用 arules 中的apriori 函数。转换为事务时显示错误:

dat <- read.csv("spss.csv",head=TRUE,sep="," , as.is = T)
dat[,2] <- factor(dat[,2])
dat[,3] <- factor(dat[,3])
spssdat <- dat[,c(1,2,3)]
str(spssdat)

'data.frame':   108919 obs. of  3 variables:
 $ Transaction_id: int  3000312 3000312 3001972 3003361 3003361 3003361 3003361 3003361 3003361 3004637 ...
 $ product_catalog : Factor w/ 9 levels "AIM","BA","IM",..: 1 1 5 7 7 7 7 7 7 1 ...
 $ product      : Factor w/ 332 levels "ACM","ACTG/AIM",..: 7 7 159 61 61 61 61 61 61 7 ...

trans4 <- as(spssdat, "transactions")

Error in as(spssdat, "transactions") : 
  no method or default for coercing “data.frame” to “transactions”

如果数据只有两列,则可以:

trans4 <- as(split(spssdat[,2], spssdat[,1]), "transactions")

但是当我有 3 列时,我不知道如何转换。通常还有其他列,例如类别属性、客户属性。所以该列通常大于 2 列。需要在多列之间找到规则。

【问题讨论】:

    标签: r transactions attributes arules


    【解决方案1】:

    我在this website 上找到了一些对我有用的信息。让我复制相关段落:

    数据框可以是标准化(单个)形式或平面文件(篮子)形式。
    当文件采用篮子形式时,这意味着每条记录代表一个交易,其中篮子中的项目由列表示。
    当数据集是single形式时,这意味着每条记录代表一个单一的项目,每个项目都包含一个事务ID

    要从文件加载事务,请使用read.transactions。在您和我的案例中,文件都是单一形式。
    我使用以下代码将 .csv 文件加载为transactions

    trans = read.transactions("some_data.csv", format = "single", sep = ",", cols = c("transactionID", "productID"))
    

    要完全理解上述命令,请查看 read.transactions 手册,在 R 控制台中输入 ?read.transactions 后可用。

    【讨论】:

    • 我有点困惑这个函数应该如何工作。我有一个带有列标题的 CSV 文件。 ID 列是一组日期。所有其他列都是二进制 1 和 0。这个函数是为了解析这种数据而设计的吗?当我尝试运行您提供的代码时,它似乎不起作用。
    • 自从我在 R 中工作已经有一段时间了,但我认为代码应该可以工作,只要你将相关的列标题 (cols) 和分隔符 (sep) 传递给函数.如果没有您的数据格式示例,很难说。
    • 非常想...在阅读您的回复之前,我几乎发明了热毛巾。完美运行。
    【解决方案2】:

    我试图做同样的事情,在我考虑了我正在使用的 data.frame 中的所有列之后,我仍然无法将它强制转换为事务的 itemMatrix。然后我意识到我从来没有为我正在工作的会话重新加载“arules”包。非常愚蠢的错误,但只是想提一下,以防其他人遇到同样的问题,先尝试简单的东西:

    library("arules")
    

    【讨论】:

      【解决方案3】:

      您需要先将“Transaction_id”转换为因子变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2014-07-03
        • 2011-01-27
        相关资源
        最近更新 更多