2015-01-14 4 views
0

Предположим, у меня есть ряд проверок для анализа вида:Group содержание строк по идентификатору

Check_ID Category Items Cost 
    000  Sugar  1  1 
    001  Milk  1 10 
    001  Butter 2 20 
    001  Bread  1  5 

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

Check_ID Category.1 Items Cost Category.2 Items Cost Category.3 Items Cost 
    000  Sugar  1  1 
    001  Milk  1 10 Butter  2  20 Bread  1  5 

Мне нужно понять, какие продукты обычно принимаются вместе. Может быть, есть альтернативное решение, но я довольно застрял.

Заранее спасибо.

+1

Я думаю, что это, возможно, потребуется некоторое уточнение, прежде чем она решена, например, в какой форме ваши данные, кадр данных или список и т.д.? в каком формате находится каждый из этих столбцов? Вы всегда можете опубликовать код, чтобы помочь другим воспроизвести вашу работу. это может помочь http://stackoverflow.com/help/how-to-ask – DaveRGP

ответ

2

Вы можете использовать reshape после создания уникальной переменной «время». Это легко сделать с getanID из моего пакета «splitstackshape»:

library(splitstackshape) 
getanID(mydf, "Check_ID") 
# Check_ID Category Items Cost .id 
# 1:  0 Sugar  1 1 1 
# 2:  1  Milk  1 10 1 
# 3:  1 Butter  2 20 2 
# 4:  1 Bread  1 5 3 
reshape(getanID(mydf, "Check_ID"), direction = "wide", idvar = "Check_ID", timevar = ".id") 
# Check_ID Category.1 Items.1 Cost.1 Category.2 Items.2 Cost.2 Category.3 Items.3 Cost.3 
# 1:  0  Sugar  1  1   NA  NA  NA   NA  NA  NA 
# 2:  1  Milk  1  10  Butter  2  20  Bread  1  5 
+0

Очень приятно, хотя вы не можете избежать использования 'reshape' здесь? –

+0

@DavidArenburg, что вы имели в виду? – A5C1D2H2I1M1N2O1R2T1

+0

Я не знаю, может быть, что-то векторизованное, например, 'dcast' может быть? У меня нет времени делать тесты прямо сейчас, извините :) –

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