18

我有以标准化方式从数据库中出来的数据,其中包含年份、状态和值的字段。

我想对数据进行分析,并需要将其格式化,其中每年是一个字段而不是记录。所以我想要每个记录是一个状态的数据,然后每年都有一个字段,这些字段的每个值是那一年和那个州的值。

有执行此操作的命令吗?

所以我有:

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
4

3 回答 3

21

您想使用该reshape()功能。

reshape(data, idvar="State", timevar="Year", direction="wide")
于 2009-07-23T02:21:02.030 回答
6

另一种选择是使用由无与伦比的 Hadley Wickham 创建的 reshape

library(reshape)

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

cast(tuna,State~Year~variable)
于 2009-07-23T02:56:09.883 回答
2

您甚至可以将熔化和铸造线组合成对 recast 函数的一次调用。

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"))
于 2009-07-23T19:22:01.963 回答