2015-11-07 3 views
0

У меня есть data.frame сделок в следующем формате:Как преобразовать data.frame данных транзакций в данные последовательности в R?

item transactionID customerID 
A   1   1 
B   1   1 
B   2   2 
C   3   1 
A   4   3 

Я хочу, чтобы преобразовать его в следующем формате и сохранить его в текстовом файле, чтобы потом проанализировать его с помощью arulesSequences пакета:

CustomerID SequenceID Size items 
    1   1  2  {A,B} 
    1   2  1  {C} 
    2   1  1  {B} 
    3   1  1  {A} 

Я ищу оптимальный способ преобразования этих данных. Обратите внимание, что для каждого клиента у нас может быть несколько транзакций, и каждая транзакция может содержать более одного элемента. Благодарю.

+1

использование dcast в перекроить пакет – Bg1850

+0

Можете ли вы объяснить это немного? – Milad

ответ

1

Что касается этого решения?

library(dplyr) 

df %>% group_by(customerID, transactionID) %>% 
summarise(Size = length(item), items = paste(item, collapse=",")) %>% 
group_by(customerID) %>% 
mutate(items = paste0("{",items,"}"), transactionID = row_number()) 

Source: local data frame [4 x 4] 
Groups: customerID 

    customerID transactionID Size items 
1   1    1 2 {A,B} 
2   1    2 1 {C} 
3   2    1 1 {B} 
4   3    1 1 {A} 
1

Базовый раствор с aggregate:

with(inp, aggregate(item, 
        list(transactionID =transactionID, customerID =customerID), 
        function(item) c(Size=length(item), 
             items=paste0("{",paste0(item,collapse=","), "}")))) 

    transactionID customerID x.Size x.items 
1    1   1  2 {A,B} 
2    3   1  1  {C} 
3    2   2  1  {B} 
4    4   3  1  {A} 
Смежные вопросы