我正在尝试在R中进行先验分析,但由于我将在不同的环境中运行它,所以我必须在没有" read.transactions"功能(因为这个需要从文件中获取数据,在本例中我不能这样做)。换句话说 - 我必须使用我已经拥有的列,而不涉及任何文件。 所以,这是我写的一个例子,向你展示我的问题:
test <- data.frame(c(1, 2, 3, 4, 5), c("1, 2, 3", "2, 4", "1, 5, 2", "4, 1", "2, 3, 4, 5"))
colnames(test) <- c("TransactionID", "items")
test$TransactionID <- as.factor(test$TransactionID)
rules <- as(split(as.vector(test[,2]),as.vector(test[,1])), "transactions")
tkoszyk <- apriori(rules, parameter=list(minlen=2, sup=0.1, conf=0.1, target="rules"))
inspect(tkoszyk)
所以这里的问题是这个函数以错误的方式读取我的项目向量。这是一个输出:
lhs rhs support confidence lift count
[1] {} => {1, 2, 3} 0.2 0.2 1 1
[2] {} => {2, 4} 0.2 0.2 1 1
[3] {} => {1, 5, 2} 0.2 0.2 1 1
[4] {} => {4, 1} 0.2 0.2 1 1
[5] {} => {2, 3, 4, 5} 0.2 0.2 1 1
所以基本上它的作用是代替像那样制作项目清单:
"1" "2" "3" "4" "5"
它使项目列表如下:
"1, 2, 3" "1, 5, 2" "2, 3, 4, 5" "2, 4" "4, 1"
在我对此主题进行调查期间,我了解到这里的问题是引号。只是为了尝试我在R中使用&#39; read.transactions&#39;当我标记&#39;引用&#39;参数为FALSE,它开始正常工作。但是还有一次,因为我不能使用read.transactions。我不知道如何处理这个问题。
当然这个数据只是一个例子,所以在我的实际数据中,我无法轻易改变它,我必须使用一些R代码,而不使用文件。
我认为我最好的想法是尝试使用
capture.output(cat(test$items))
但我仍然无法使其发挥作用 非常感谢任何帮助,我已经很无望了。
答案 0 :(得分:0)
你的分裂不起作用。你应该做点什么:
itemList <- strsplit(as.character(test$items), split = ", ")
trans <- as(itemList, "transactions")
inspect(trans)
items
[1] {1,2,3}
[2] {2,4}
[3] {1,2,5}
[4] {1,4}
[5] {2,3,4,5}