【问题标题】:How to convert object of Transaction to Dataframe in R如何在 R 中将 Transaction 对象转换为 Dataframe
【发布时间】:2017-02-01 05:07:41
【问题描述】:

如何将arules包中的Dataset(Groceries)转换为dataframe。

class(Groceries)
[1] "transactions"
attr(,"package")
[1] "arules"

【问题讨论】:

    标签: r r-package arules


    【解决方案1】:

    您需要指定实际需要的内容。我在arules-package 的帮助页面中没有看到as.data.frame.transactions 函数。数据项Groceries 确实嵌入了一个数据框,但是这是否是您想要的似乎不太可能:

    str(Groceries)
    Formal class 'transactions' [package "arules"] with 3 slots
      ..@ data       :Formal class 'ngCMatrix' [package "Matrix"] with 5 slots
      .. .. ..@ i       : int [1:43367] 13 60 69 78 14 29 98 24 15 29 ...
      .. .. ..@ p       : int [1:9836] 0 4 7 8 12 16 21 22 27 28 ...
      .. .. ..@ Dim     : int [1:2] 169 9835
      .. .. ..@ Dimnames:List of 2
      .. .. .. ..$ : NULL
      .. .. .. ..$ : NULL
      .. .. ..@ factors : list()
      ..@ itemInfo   :'data.frame': 169 obs. of  3 variables:
      .. ..$ labels: chr [1:169] "frankfurter" "sausage" "liver loaf" "ham" ...
      .. ..$ level2: Factor w/ 55 levels "baby food","bags",..: 44 44 44 44 44 44 44 42 42 41 ...
      .. ..$ level1: Factor w/ 10 levels "canned food",..: 6 6 6 6 6 6 6 6 6 6 ...
      ..@ itemsetInfo:'data.frame': 0 obs. of  0 variables
    

    我猜你真的想要:

    as.matrix( Groceries@data )
    

    可能将Groceries@ itemInfo$ labels 添加为行名

    【讨论】:

    • 这会有所帮助,首先是矩阵,然后是数据框并向其中添加 Colnames,谢谢 :)
    【解决方案2】:

    arules 使用 S4 类型的对象,但交易数据存储在转置的稀疏矩阵中。您不应使用@ 直接访问数据。使用强制访问交易数据。这将确保数据采用正确的格式和正确的项目标签。

    例子:

    as(Groceries, "matrix")
    as(Groceries, "list")
    

    matrix 是一个逻辑事务逐项矩阵,list 生成事务集列表。有关详细信息,请查看 ?transactions 中的 coercion 方法。

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2021-03-01
      • 2018-09-03
      • 1970-01-01
      • 2014-10-05
      • 2022-07-28
      • 2015-09-15
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多