2016-06-20 23 views
-1

Ich habe einen Datensatz von dem Format:Ändern Dateneingabeformat für Apriori Algorithmus

txn_id prod_name 
    223  milk 
    223  eggs 
    235  eggs 
    235  bread 
    235  butter 

ich diese Daten zu verwenden, ich versuche zu finden Korrelation zwischen verschiedenen Produkten (Warenkorbanalyse). Um den Apriori-Algorithmus in R zu verwenden, müssen die Daten das folgende Format haben:

Wie erreichen?

+0

Sie suchen die "dcast" -Funktionalität. Schlage diese Funktion nach, die dir helfen soll. Sie können die Spalten aufgrund Ihrer eigenen Bedürfnisse gruppieren, indem Sie einzelne Formeln verwenden. Aber zuerst müssen Sie das Paket "reshape2" installieren. – Rockbar

Antwort

0

Das Paket arules verfügt über diese Funktionalität. Wenn Sie in der Dokumentation suchen, unter transactions-class, finden Sie:

## example 4: creating transactions from a data.frame with transaction IDs and items 
a_df3 <- data.frame(
    TID = c(1,1,2,2,2,3), 
    item=c("a","b","a","b","c", "b") 
) 
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions") 

split ordnet die Daten, so dass Sie eine Liste mit allen Artikeln mit der gleichen TID pro Zeile haben.

0

Sie könnten dplyr und tidyr verwenden.

library(dplyr) 
library(tidyr) 

adf <- read.table(header = TRUE, stringsAsFactors = FALSE, text = ' 
txn_id prod_name 
223  milk 
223  eggs 
235  eggs 
235  bread 
235  butter') %>% tbl_df 

### For each transaction, a 'prod_name_key' is created for each 'prod_name' 
adf %>% 
    group_by(txn_id) %>% 
    mutate(prod_name_key = paste0('prod_name_', 1:n())) %>% # Creates key 
    spread(prod_name_key, prod_name, fill = '')    # Reshapes data 

## Source: local data frame [2 x 4] 
## 
## txn_id prod_name_1 prod_name_2 prod_name_3 
## (int)  (chr)  (chr)  (chr) 
## 1 223  milk  eggs    
## 2 235  eggs  bread  butter 

Möglicherweise gibt es eine prägnantere Möglichkeit, dies zu tun, aber dies scheint zu tun, was Sie fragen.