【R】カテゴリごとの時系列データ(横長)を作成する方法

スポンサーリンク

仕事上、カテゴリごとの時系列データを扱うことが多いので、自分でランダムデータを作成してみました。
ポイントは以下の通りです。

  • 時系列の行を先に作成する
  • カテゴリごとにランダムデータを作成する
    • データは時系列の長さと同じ個数にする
  • rbindで行結合し名前を変更

コードは以下のようになります。

#横長の時系列データ作成
date<-seq(as.Date("2014-01-01"), as.Date("2014-12-31"), by="month")
date<-format(date,"%Y-%m")
length(date) #作成した月の個数
[1] 12

#a,b,c,dの乱数データ作成
a<-rnorm(length(date), 10,5)  #平均10, 標準偏差2の分布に従う乱数12ヶ月分
b<-rnorm(length(date), 10,5)
c<-rnorm(length(date), 10,5)
d<-rnorm(length(date), 10,5)
data<-rbind(a,b,c,d, deparse.level = 0)
data<-cbind(1:4,data)

#フィールド名を付けてデータフレーム化
colnames(data)<-c("ID",date)
data<-as.data.frame(data)

こんな感じになります。

head(data)
ID   2014-01   2014-02   2014-03    2014-04   2014-05   2014-06
 1  8.824249 16.626423  6.194609 14.3257693 11.266481 14.544814
 2 12.384284 18.761856  3.395951  7.4794632 10.894481  6.750853
 3  6.761728  6.326463 15.305923 -0.1715218 14.856475 11.724195
 4  7.795726  8.590825 20.125522  6.7458553  6.481253 13.665111

  2014-07   2014-08   2014-09   2014-10   2014-11  2014-12
15.366379 11.871764  9.789873  4.061051 12.619053 20.72044
23.566634  9.590283 15.598248 10.424739  3.460675  9.11827
 7.326415  4.865609 19.332764 11.928117 19.517661 13.65438
16.277567 10.612032  4.456279 14.038984  1.216464 12.73934

もっと良い方法があったら教えてください。

スポンサーリンク
スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です