【发布时间】:2018-02-21 15:36:14
【问题描述】:
作为 arules 算法数据准备的一部分,我有一个以下格式的数据。
userid p1 p2 p3
1 1 0 0
2 1 1 0
3 0 1 1
4 0 1 0
我需要交易文件
1 p1
2 p1
2 p2
3 p2
3 p3
4 p2
你们能帮我解决这个问题吗?
谢谢。
【问题讨论】:
作为 arules 算法数据准备的一部分,我有一个以下格式的数据。
userid p1 p2 p3
1 1 0 0
2 1 1 0
3 0 1 1
4 0 1 0
我需要交易文件
1 p1
2 p1
2 p2
3 p2
3 p3
4 p2
你们能帮我解决这个问题吗?
谢谢。
【问题讨论】:
您只需将数据转换为logical。
library("arules")
dat <- data.frame(
userid = 1:4,
p1 = c(1,1,0,0),
p2 = c(0,1,1,1),
p3 = c(0,0,1,0)
)
dat2 <- dat[,-1]
for(i in 1:ncol(dat2)) dat2[[i]] <- as.logical(dat2[[i]])
dat2
p1 p2 p3
1 TRUE FALSE FALSE
2 TRUE TRUE FALSE
3 FALSE TRUE TRUE
4 FALSE TRUE FALSE
tran <- as(dat2, "transactions")
inspect(tran)
items transactionID
[1] {p1} 1
[2] {p1,p2} 2
[3] {p2,p3} 3
[4] {p2} 4
【讨论】:
一种选择是在逻辑matrix 上使用which 并提取row.names
row.names(which(t(df1[-1])==1, arr.ind = TRUE))
#[1] "p1" "p1" "p2" "p2" "p3" "p2"
【讨论】: