从单独的数据帧循环以在 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)