作为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你们能帮我个忙吗。
谢谢。
发布于 2018-02-22 00:24:07
一种方法是在逻辑matrix上使用which并提取row.names
row.names(which(t(df1[-1])==1, arr.ind = TRUE))
#[1] "p1" "p1" "p2" "p2" "p3" "p2"发布于 2018-02-23 12:59:39
您所需要做的就是将您的数据转换为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 https://stackoverflow.com/questions/48909782
复制相似问题