2009-07-23 87 views
15

我有一個數據以標準化的方式從數據庫中出來,包含年份,狀態和值的字段。將數據從多行轉換爲多列

我想對數據進行分析,並且需要將其格式化爲每年是字段而不是記錄的格式。因此,我希望數據中的每個記錄都是一個狀態,然後每個年份和每個記錄都有一個字段這些領域的價值是該年和該州的價值。

有沒有這樣的命令?

所以我必須:

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 

回答

18

您要使用的reshape()功能。

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

另一種選擇是使用重塑,由獨特的哈德利韋翰創建:

library(reshape) 

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

cast(tuna,State~Year~variable) 
2

可以熔體和投行甚至合併成一個呼叫重鑄功能。

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")) 
+0

在這種情況下,數據已經處於熔化狀態,所以您可以跳過熔化步驟。 – hadley 2009-07-26 14:15:45