如何将事务的对象转换为R中的Dataframe

时间:2017-02-01 05:07:41

标签: r r-package arules

如何将arules包中的数据集(Groceries)转换为数据帧。

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

2 个答案:

答案 0 :(得分:2)

您需要指定实际需要的内容。我在as.data.frame.transactions - 包的帮助页面中没有看到arules函数。数据项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添加为rownames

答案 1 :(得分:2)

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

示例:

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

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