最初の列にタイムポイントの列、最初の行にシリアル番号のリスト、残りのデータフレームに実際の在庫データ (アイテムの数) を含む不規則なデータフレームを扱っています。
> mydf
V1 V2 V3 V4 V5
1 month item_serial123 item_serial234 item_serial345 item_serial456
2 0 234 120 302 500
3 1 344 125 350 450
4 2 235 129 400 300
5 3 453 145 450 330
6 4 200 130 500 200
7 5 201 501
8 6 504 202
各アイテムのシリアル番号で分析を実行できるように、「長い」リストを持つようにデータをフォーマットしようとしています。stringsAsFactors=FALSE
リストから数値以外のデータを破棄し、 でフラグを設定してread.table
から mydf をデータ マトリックスに変換することにより、データが文字オブジェクトとしてインポートされることを確認できます。
> mydf.new<-data.matrix(mydf)
Warning in data.matrix(mydf) : NAs introduced by coercion
Warning in data.matrix(mydf) : NAs introduced by coercion
Warning in data.matrix(mydf) : NAs introduced by coercion
Warning in data.matrix(mydf) : NAs introduced by coercion
Warning in data.matrix(mydf) : NAs introduced by coercion
> mydf.new
V1 V2 V3 V4 V5
[1,] NA NA NA NA NA
[2,] 0 234 120 302 500
[3,] 1 344 125 350 450
[4,] 2 235 129 400 300
[5,] 3 453 145 450 330
[6,] 4 200 130 500 200
[7,] 5 201 NA 501 NA
[8,] 6 NA NA 504 202
変数 V1 を「時間」に変更するのは簡単です。私が本当に苦労しているのは、mydf[1,2:5]
メルト/キャスト時にシリアル番号を抽出して適切なデータに割り当てる方法mydf.new
です。私が巻き上げたいのは、次のようなものです。
time count serial_number
0 234 item_serial123
1 344 item_serial123
2 235 item_serial123
3 453 item_serial123
4 200 item_serial123
5 201 item_serial123
6 NA item_serial123
などなど 何か提案はありますか?