データが入っているdat
(そしてレベルがカレンダー順に設定されている) 場合、別の基本 R ソリューションは (信じられないほど直観的でない)reshape()
関数を使用することです。
reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
direction = "wide")
データのスニペットについては、次のようになります。
> reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
+ direction = "wide")
Store Demand.Jan Demand.Feb Demand.Mar
1 A 100 150 120
4 B 200 230 320
必要に応じて、名前を簡単に消去できます。
> out <- reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
+ direction = "wide")
> names(out)[-1] <- month.abb[1:3]
> out
Store Jan Feb Mar
1 A 100 150 120
4 B 200 230 320
(上記の出力を取得するために、@DWin の回答に示されているのと同様の方法でデータを読み取り、次を実行しました。
dat <- transform(dat, Month = factor(Month, levels = month.abb[1:3]))
dat
私がデータと呼んだものはどこにありましたか)