Цикл из отдельного фрейма данных для записи .CSV в R

Я пытаюсь запустить правило ассоциации для разных входов и распечатать результат в отдельных файлах csv. Я хотел бы просмотреть входные данные модели из отдельного фрейма данных и повторить задание, пока оно не достигнет последнего значения.

Фрейм данных CTVU

MMGID_5    EMAIL
2341       [email protected]
50         [email protected]
311        [email protected]
2341       [email protected]
2387       [email protected]
57         [email protected]
2329       [email protected]
2026       [email protected]
650        [email protected]
2369       [email protected]

Вот модель

# 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))

Вместо того, чтобы вручную объявлять 2341 в appearance = list(default="rhs",lhs="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)

Фрейм данных MMGID для поиска в цикле:

MMGID
2341       
50         
311       

Это возможно?


person Davis    schedule 27.08.2016    source источник
comment
Откуда 289?   -  person Roman Luštrik    schedule 27.08.2016
comment
@RomanLuštrik 289 — это значение в data.frame MMGID_5 (извините, я не очень ясно выразился — просто обновил скрипт). Это значение, которое я хочу заменить циклом.   -  person Davis    schedule 28.08.2016


Ответы (1)


Просто передайте вектор значений в цикле, и этот вектор будет столбцом кадра данных MMGID, который содержит значения для итерации.

Ниже приведен подход lapply(), который выводит соответствующие файлы CSV и создает большой список базовых правил dfs. Кроме того, я не знаю названия этого столбца, так как в вашем сообщении имя столбца объединяется с именем кадра даты 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)
person Parfait    schedule 28.08.2016