2016-08-27 14 views
0

異なる入力の関連付けルールを実行して、別々のcsvファイルで出力を印刷しようとしています。別のデータフレームからモデル入力を調べて、最後の値に達するまでジョブを繰り返す必要があります。別のデータフレームをループして.CSVをRに書き込む

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

こちらのモデルは、私は、代わりに手動で新しい新しい変数が宣言されるたびにappearance = list(default="rhs",lhs="2341")2341を宣言し、ファイルの名前を変更するには

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

でしょうですこのプロセスを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  

が可能、このですか?

+0

289はどこから来るのでしょうか? –

+0

@RomanLuštrik '289'はdata.frame' MMGID_5'の値です(私は非常に明確ではありませんでした - 残念ながら、スクリプトを更新しました)。それはループで置き換えたい値です。 – Davis

答えて

1

ループの値のベクトルを渡すだけで、そのベクトルは反復される値を保持するMMGIDデータフレーム列になります。

以下は、対応するCSVを出力し、基になるルールdfsの大きなリストを作成する、lapply()アプローチです。あなたの投稿がコル、必要に応じて、以下のでdateframe名MMGID -fillで列名を融合しますとしても、私はその列の名前を知らない:

# 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

ありがとうございました!私はそれが欲しかったように正確に働いた:) – Davis

関連する問題