2017-09-05 3 views
0

Bitte helfen Sie mit der Konvertierung eines Charakters Vektor von Einkäufen in "Transaktionen" für arules. Die Originaldaten sind so etwas wie:konvertieren zeichen vektor zu transaktionen für arules

shopping_items <- c("apple banana", "orange", "tea orange beef") 

Jedes Element des Vektors in einer einzigen Transaktion gekauft Artikel darstellt, und die Einzelteile durch ein Leerzeichen getrennt werden „“, zum Beispiel Transaktion 1 zwei Elemente enthalten, den Apfel und Banane sind . Wie kann ich dies in den Typ "Transaktionen" umwandeln, damit ich in arules damit arbeiten kann?

Vielen Dank im Voraus!

Antwort

1

Dies ist die Kurzversion:

library(arules) 
shopping_items <- c("apple banana", "orange", "tea orange beef")  

trans <- as(strsplit(shopping_items, " "), "transactions") 

inspect(trans) 
    items    
[1] {apple,banana} 
[2] {orange}   
[3] {beef,orange,tea} 
2

Die Implementierung ist wahrscheinlich nicht optimal, aber Sie können versuchen, es zu verbessern.

library(stringi) 
library(arules) 
library(purrr) 

shopping_items <- c("apple banana", "orange", "tea orange beef") 

str <- paste(shopping_items,collapse = ' ') 

# unique items 
str_un <- unique(unlist(stri_split_fixed(str,' '))) 

# create a dataframe with dimensions: 
# length(shopping_items) x length(str_un) 
df <- as.data.frame(matrix(rep(0,length(str_un)*length(shopping_items)),ncol=length(str_un))) 
names(df) <- str_un 

# positions of 1's in each column 
vecs <- map(str_un,grep,shopping_items) 

sapply(1:length(str_un), function(x) df[,x][vecs[[x]]] <<- 1) 
df[] <- lapply(df,as.factor) 

# Generate a transactions dataset. 
tr <- as(df, "transactions") 

# Generate the association rules. 
# rules <- apriori(tr, ... 
Verwandte Themen