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

r reshape

25227 просмотра

3 ответа

38216 Репутация автора

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

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

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

Так что я:

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
Автор: JD Long Источник Размещён: 23.07.2009 02:17

Ответы (3)


20 плюса

4587 Репутация автора

Решение

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

reshape(data, idvar="State", timevar="Year", direction="wide")
Автор: Josh Reich Размещён: 23.07.2009 02:21

6 плюса

20991 Репутация автора

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

library(reshape)

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

cast(tuna,State~Year~variable)
Автор: Matt Parker Размещён: 23.07.2009 02:56

2 плюса

15377 Репутация автора

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

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"))
Автор: Thierry Размещён: 23.07.2009 07:22
Вопросы из категории :
32x32