2015-01-11 3 views
0

Я пытаюсь преобразовать данные, выглядит следующим образом:dcast производит чрезвычайно широкий dataframe

> long.data 
     date  ID average stat 
5128 20020510 UKM66 42.51919 minimum 
2267 20020510 PL622 61.31768 average 
265 20020503 DE71E 42.17819 maximum 

где average определяется комбинацией date, ID и stat, в чем-то, что выглядит следующим образом:

> wide.data 
     date ID minimum average maximum 
1 20020510 UKM66  50  62  70 
2 20020510 PL622  52  60  63 
3 20020510 DE71E  49  67  80 

насколько я могу судить, dcast бы отличный способ сделать это, но когда я пытаюсь следующее:

> wide.data <- dcast(long.data, date + ID + stat ~ average) 

я получаю предупреждение и чудовищно длинный dataframe:

Using stat as value column: use value.var to override. 
> ncol(wide.data) 
[1] 4577 

Кажется, что R дает мне столбец для каждого уникального значения наблюдения. Я прочитал документацию по reshape2 и dcast, но я все еще просто не понимаю. Что здесь происходит?

+3

Вы хотите 'dcast (long.data, date + ID ~ stat, value.var =" average ")'. 'dcast' предоставит вам новый столбец для каждого уникального значения (или комбинации значений для нескольких переменных) переменной справа от' ~ '. – eipi10

+0

Мне трудно понять, что на самом деле рассчитывается. В каком столбце указаны значения, из которых должны быть получены «средний», «максимальный» и «минимальный»? И почему этот пример данных дает результат, который предлагается в качестве желаемого результата? –

+0

Среднее значение в long.data содержит все значения. Я признаю, что сбивает с толку, что стат иногда содержит «средний». –

ответ

1

Вы хотите dcast(long.data, date + ID ~ stat, value.var="average"). dcast предоставит вам новый столбец для каждого уникального значения (или комбинации значений для нескольких переменных) переменной справа от ~.

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