2016-08-27 3 views
0

다른 입력에 대해 연관 규칙을 실행하고 출력을 개별 csv 파일로 인쇄하려고합니다. 별도의 데이터 프레임에서 모델 입력을 찾아보고 마지막 값에 도달 할 때까지 작업을 반복하고 싶습니다. 여기 Dataframe CTVU별도의 데이터 프레임에서 루프를 작성하여 .CSV를 R

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 번 실행합니다.

MMGID 
2341  
50   
311  

이게 가능 :

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는에서 루프까지를 볼 수 있습니다?

+0

에서 왔 않는 경우 : 귀하의 게시물이 필요에 따라 아래 에 dateframe 이름으로 MMGID 채집 한을 열 이름을 conflates으로 또한, 그 컬럼의 이름을 몰라? –

+0

@ RomanLuštrik'289'는 data.frame'MMGID_5'에있는 값입니다. (미안 해요. 아주 명확하게 만들지 않았습니다. 그냥 스크립트를 업데이트했습니다). 그것은 루프로 대체하려는 값입니다. – Davis

답변

1

루프의 값 벡터를 전달하기 만하면 벡터는 반복 할 값을 보유하는 MMGID 데이터 프레임 열이됩니다.

다음은 대응하는 CSV를 출력하고 기본 규칙 dfs의 큰 목록을 생성하는 lapply() 접근 방식입니다. 289

# 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

관련 문제