从单独的数据帧循环以在 R 中写入 .CSV
Loop from separate dataframe to write .CSV in R
我正在尝试 运行 不同输入的关联规则,并在单独的 csv 文件中打印输出。我想从一个单独的数据框中查找模型输入并重复该作业,直到它达到最后一个值。
数据框CTVU
MMGID_5 EMAIL
2341 1@email.x
50 1@email.x
311 1@email.x
2341 2@email.x
2387 2@email.x
57 2@email.x
2329 2@email.x
2026 3@email.x
650 3@email.x
2369 3@email.x
这是模型
# Loading packages
library(arules)
library(arulesViz)
# Reading in data
CTVU <- read.csv("CTVU.csv", header = TRUE)
CTVU <- unique(CTVU[ , c(2,5) ])
CTVU <- as(split(CTVU[,"MMG5_ID"], CTVU[,"EMAIL"]), "transactions")
# model
rules<-sort(rules, by="confidence", decreasing=TRUE)
rules <- apriori(CTVU, parameter = list(supp = 0.001, conf = 0.8,maxlen=3))
我不想在 appearance = list(default="rhs",lhs="2341")
中手动声明 2341
并在每次声明新变量时更改文件名,我想使用循环 运行这处理了 x 次。
rules<-apriori(data=CTVU, parameter=list(supp=0.001,conf = 0.01,minlen=2),
appearance = list(default="rhs",lhs="2341"),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:5])
# create rules into data.frame and write as CSV file
CTVR <- as(rules, "data.frame")
write.csv(CTVR, file = "2341_Basket.csv", row.names = FALSE)
Dataframe MMGID
从以下位置查找循环:
MMGID
2341
50
311
这可能吗?
只需在循环中传递一个值向量,该向量将是包含要迭代的值的 MMGID 数据帧列。
下面是一个 lapply()
方法,它将输出相应的 CSV 并创建大量基础规则 dfs。另外,我不知道该列的名称,因为您的 post 将列名称与日期框名称 MMGID 混为一谈 - 在下面填写 Col根据需要:
# ITERATE THROUGH MMGID COLUMN VALUES
rules_dflist <- lapply(MMGID$Col, function(i) {
rules<-apriori(data=CTVU, parameter=list(supp=0.001,conf = 0.01,minlen=2),
appearance = list(default="rhs",lhs=as.character(i)),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:5])
# create rules into data.frame and write as CSV file
CTVR <- as(rules, "data.frame")
write.csv(CTVR, file = paste0(i,"_Basket.csv"), row.names = FALSE)
return(CTVR)
})
# NAME EACH ELEMENT TO CORRESPONDING MMGID COL VALUE
rules_dflist <- setNames(rules_dflist, MMGID$Col)
我正在尝试 运行 不同输入的关联规则,并在单独的 csv 文件中打印输出。我想从一个单独的数据框中查找模型输入并重复该作业,直到它达到最后一个值。
数据框CTVU
MMGID_5 EMAIL
2341 1@email.x
50 1@email.x
311 1@email.x
2341 2@email.x
2387 2@email.x
57 2@email.x
2329 2@email.x
2026 3@email.x
650 3@email.x
2369 3@email.x
这是模型
# Loading packages
library(arules)
library(arulesViz)
# Reading in data
CTVU <- read.csv("CTVU.csv", header = TRUE)
CTVU <- unique(CTVU[ , c(2,5) ])
CTVU <- as(split(CTVU[,"MMG5_ID"], CTVU[,"EMAIL"]), "transactions")
# model
rules<-sort(rules, by="confidence", decreasing=TRUE)
rules <- apriori(CTVU, parameter = list(supp = 0.001, conf = 0.8,maxlen=3))
我不想在 appearance = list(default="rhs",lhs="2341")
中手动声明 2341
并在每次声明新变量时更改文件名,我想使用循环 运行这处理了 x 次。
rules<-apriori(data=CTVU, parameter=list(supp=0.001,conf = 0.01,minlen=2),
appearance = list(default="rhs",lhs="2341"),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:5])
# create rules into data.frame and write as CSV file
CTVR <- as(rules, "data.frame")
write.csv(CTVR, file = "2341_Basket.csv", row.names = FALSE)
Dataframe MMGID
从以下位置查找循环:
MMGID
2341
50
311
这可能吗?
只需在循环中传递一个值向量,该向量将是包含要迭代的值的 MMGID 数据帧列。
下面是一个 lapply()
方法,它将输出相应的 CSV 并创建大量基础规则 dfs。另外,我不知道该列的名称,因为您的 post 将列名称与日期框名称 MMGID 混为一谈 - 在下面填写 Col根据需要:
# ITERATE THROUGH MMGID COLUMN VALUES
rules_dflist <- lapply(MMGID$Col, function(i) {
rules<-apriori(data=CTVU, parameter=list(supp=0.001,conf = 0.01,minlen=2),
appearance = list(default="rhs",lhs=as.character(i)),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:5])
# create rules into data.frame and write as CSV file
CTVR <- as(rules, "data.frame")
write.csv(CTVR, file = paste0(i,"_Basket.csv"), row.names = FALSE)
return(CTVR)
})
# NAME EACH ELEMENT TO CORRESPONDING MMGID COL VALUE
rules_dflist <- setNames(rules_dflist, MMGID$Col)