Ответ 1
Вы хотите использовать функцию reshape()
.
reshape(data, idvar="State", timevar="Year", direction="wide")
У меня есть данные, которые поступают из БД нормализованным способом с полем для года, состояния и значения.
Я хотел бы провести анализ данных и потребовать отформатировать его, где каждый год является полем, а не записью. Поэтому мне нужны данные, где каждая запись является состоянием, а затем поле для каждого года и каждое значение для этих полей значение для этого года и этого состояния.
Есть ли команда для этого?
Итак, у меня есть:
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
Вы хотите использовать функцию reshape()
.
reshape(data, idvar="State", timevar="Year", direction="wide")
Другой вариант - использовать пакет reshape, созданный неподражаемым Hadley Wickham:
library(reshape)
tuna<-melt(data,id.vars=c("State","Year"))
cast(tuna,State~Year~variable)
Вы даже можете комбинировать линии расплава и литья в один вызов функции перекомпоновки.
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"))