将数据从多行转换为多列

JD *_*ong 18 r reshape

我有一个以标准化方式从数据库中获取的数据,其中包含年份,状态和值的字段.

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

这样做有命令吗?

所以我有:

State  Year  Value  
   KY  1998     56  
   KY  1997     78  
   IL  1998     48  
   IL  1997     72
Run Code Online (Sandbox Code Playgroud)

而且我要:

State  1997_value  1998_value  
   KY          78          56  
   IL          72          48
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 20

您想使用该reshape()功能.

reshape(data, idvar="State", timevar="Year", direction="wide")
Run Code Online (Sandbox Code Playgroud)


Mat*_*ker 6

另一个选择是使用由无法模仿的Hadley Wickham创建的重塑:

library(reshape)

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

cast(tuna,State~Year~variable)
Run Code Online (Sandbox Code Playgroud)