Преобразование данных из многих строк во многие столбцы

У меня есть данные, которые поступают из БД нормализованным способом с полем для года, состояния и значения.

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

Есть ли команда для этого?

Итак, у меня есть:

State  Year  Value  
   KY  1998     56  
   KY  1997     78  
   IL  1998     48  
   IL  1997     72

и я хочу:

State  1997_value  1998_value  
   KY          78          56  
   IL          72          48

Ответы

Ответ 1

Вы хотите использовать функцию reshape().

reshape(data, idvar="State", timevar="Year", direction="wide")

Ответ 2

Другой вариант - использовать пакет reshape, созданный неподражаемым Hadley Wickham:

library(reshape)

tuna<-melt(data,id.vars=c("State","Year"))

cast(tuna,State~Year~variable)

Ответ 3

Вы даже можете комбинировать линии расплава и литья в один вызов функции перекомпоновки.

ds <- data.frame(State = c("KY", "KY", "IL", "IL"), 
Year = c(1998, 1997, 1998, 1997), 
Value = c(56, 78, 48, 72))

library(reshape)
recast(ds, State ~ Year, id.var = c("State", "Year"))