2016-04-27 2 views
0

Как я могу подготовить данные в форме «транзакций», но для каждого идентификатора транзакции учитывается временный эффект/последовательность? Я обнаружил, что, используя функцию «split», они будут упорядочены в алфавитном порядке.arules package - подготовка данных

например:

ID Items Sequence 
1 D  1 
1 A  2 
1 C  3 
2 A  1 
2 B  2 

Желаемая выход в транзакциях:

ID Items 
1 D A C#notice that A comes after D as it is dictacted by sequence variable 
     #              here for the order 
2 A B 

С уважением.

+0

Могу ли я что-то отсутствует или вы забыл также добавить C к желаемому результату? –

+0

Спасибо за головы. Ред. – skw1990

+0

Должна ли последняя строка ввода 'data' быть' 2 B 2' вместо? – OdeToMyFiddle

ответ

0

Использование lapply и rbind,

DF = read.table(text="ID Items Sequence 
1 D  1 
1 A  2 
1 C  3 
2 A  1 
2 B  2",header=TRUE,stringsAsFactors=FALSE,na.strings="") 


DF 
# ID Items Sequence 
#1 1  D  1 
#2 1  A  2 
#3 1  C  3 
#4 2  A  1 
#5 2  B  2 

Для каждого идентификатора подмножества в dataframe, сортировать по последовательности, комбинировать детали и возвращают выводе для каждого ID

DF_new = do.call(rbind,lapply(unique(DF$ID),function(x) { 

subset_DF = DF[DF$ID==x,]; 
subset_DF = subset_DF[,order(subset_DF$Sequence)] 
subset_DF = subset_DF[,c("ID","Items")] 
subset_DF$Items = paste0(subset_DF$Items,collapse=" ") 
subset_DF = unique(subset_DF) 
rownames(subset_DF)= NULL 
return(subset_DF) 
})) 

DF_new 
# ID Items 
#1 1 D A C 
#2 2 A B 
+0

Ошибка при вызове Ошибка в subet_DF [, c («ID», «Items»)]: неправильное количество измерений Вызывается из: FUN (X [[i]], ...) , когда список длиннее, т. е .: больше идентификаторов или элементов – skw1990

+0

, вы можете обновить свое сообщение с помощью вывода 'dput (head (data, 5))', где данные являются вашим входным dataframe – OdeToMyFiddle

+0

, чтобы избежать путаницы, оставит мой вывод здесь как Я немного изменил данные, расширив количество строк со случайными входами: Выход из источника (головка (DF, 5)): Структура (список (ID = c (1L, 1L, 1L, 2L, 2L), Items = c («D», «A», «0», «0», «A», «B») «Элементы», «Последовательность»), r ow.names = c (NA, 5L), class = "data.frame") – skw1990

Смежные вопросы