2016-08-27 1 views
0

Ich versuche, eine Assoziationsregel für eine andere Eingaben und drucken Sie die Ausgabe in separaten CSV-Dateien. Ich möchte die Modelleingabe von einem separaten Datenrahmen nachschlagen und den Job wiederholen, bis er den letzten Wert erreicht hat.Loop von separaten Datenrahmen zu schreiben. CSV in R

Datenrahmen 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] 

Hier ist das Modell

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

In anstatt manuell 2341 in appearance = list(default="rhs",lhs="2341") deklarieren und den Namen der Datei jedes Mal erklärt eine neue neue Variable ändert, würde ich mag es, eine Schleife zu benutzen, um diese Prozesse x-mal auszuführen.

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 aussehen Schleife oben aus:

MMGID 
2341  
50   
311  

Ist das möglich?

+0

Wo 289 kam aus? –

+0

@ RomanLuštrik '289' ist ein Wert im data.frame' MMGID_5' (Entschuldigung, ich habe das nicht sehr deutlich gemacht - habe nur das Skript aktualisiert). Es ist der Wert, den ich durch eine Schleife ersetzen möchte. – Davis

Antwort

1

Übergeben Sie einfach einen Vektor von Werten in der Schleife, und dieser Vektor wäre die MMGID-Datenframe-Spalte, die die zu iterierenden Werte enthält.

Unten ist ein lapply() Ansatz, der entsprechende CSVs ausgeben und eine große Liste von zugrunde liegenden Regeln dfs erstellen wird. Auch ich weiß nicht, Namen dieser Spalte als Beitrag die Spaltennamen mit dateframe Namen MMGID -fill in Col unten nach Bedarf verschmilzt:

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

vielen dank! Arbeitete genau so, wie ich es wollte :) – Davis

Verwandte Themen