2013-05-11 4 views
4

Во многих видах использования, которые я видел, используется функция агрегации, такая как среднее.Как использовать «литье» в форме без агрегации

Как насчет того, если вы просто хотите изменить форму без потери информации. Например, если я хочу взять этот длинный формат:

ID  condition Value 
John a   2 
John a   3 
John b   4 
John b   5 
John a   6 
John a   2 
John b   1 
John b   4 

К этому широкоформатных без агрегации:

ID a b 
John 2 4 
John 3 5 
Alex 6 1 
Alex 2 4 

Я полагаю, что это предполагает, что наблюдения являются парными, и вы пропали без вести значение будет беспорядок это вверх, но любое понимание ценится

+2

две вещи: 1. ваш широкоформатный формат не соответствует длинным форматным данным, поскольку 'Alex' не отображается в длинном формате. 2. Откуда вы знаете, что 'a == 2' и' b == 4' идут вместе вместо 'a == 2' и' b == 5' или какой-либо другой комбинации значений? Я предполагаю, что вы не показываете столбец, который указывает на эксперимент или какой-либо другой идентификатор ... – Chase

+0

@ Можете предположить, что у них всего две строки для каждой комбинации ID *. Но больше информации от aleph4 не повредит ... – Dason

ответ

6

В таких случаях вы можете добавить порядковый номер:

library(reshape2) 

DF$seq <- with(DF, ave(Value, ID, condition, FUN = seq_along)) 
dcast(ID + seq ~ condition, data = DF, value.var = "Value") 

В последней строке:

ID seq a b 
1 John 1 2 4 
2 John 2 3 5 
3 John 3 6 1 
4 John 4 2 4 

(Обратите внимание, что мы использовали входные выборки от вопроса, но на выходе образца в вопросе не соответствует входу образца.)