根据R中的数据框创建列表

时间:2014-04-05 22:18:20

标签: r list

我有以下格式的数据框

user         item
10000000     1      # each user is a 8 digits integer, item is up to 5 digits integer
10000000     2
10000000     3
10000001     1
10000001     4
..............

我想要的是列表B,用户的名字作为列表元素的名称,列表元素是与该用户对应的项目的向量。

例如

B = list(c(1,2,3),c(1,4),...)    

我还需要将名称粘贴到B.要应用关联规则学习,需要将项目转换为字符

最初我使用了tapply(A$user,A$item, c),这使得它与关联规则包不兼容。看我的帖子:

data format error in association rule learning R

但@ sgibb的解决方案似乎也会生成一个数组,而不是列表。

library("arules")
temp <- as(C, "transactions")    # C is output using @sgibb's solution

throws error: Error in as(C, "transactions") : 
no method or default for coercing “array” to “transactions”

1 个答案:

答案 0 :(得分:2)

查看tapply

df <- read.table(textConnection("
user         item
10000000     1
10000000     2
10000000     3
10000001     1
10000001     4"), header=TRUE)

B <- tapply(df$item, df$user, FUN=as.character)
B
# $`10000000`
# [1] "1" "2" "3"
#
# $`10000001`
# [1] "1" "4"

编辑:我不知道 arules 包,但这里是@alexis_laz提出的解决方案:

library("arules")
as(split(df$item, df$user), "transactions")
# transactions in sparse format with
#  2 transactions (rows) and
#  4 items (columns)