6

RのTraMineRを使用してタイムダイアリーデータ(American Time Use Survey)を使用してシーケンス分析を実行しようとしています。データをSPELLデータ(ID、開始時刻、停止時刻、イベント)として持っていますが、しようとすると次のエラーが発生します。それをSTSまたはSPSデータに変換します。

as.matrix.data.frame(subset(data、、2))のエラー:dims[product0]がオブジェクトの長さと一致しません[9]

それは、(文字としての)時刻を日付/時刻タイプに変換する方法と関係があると思います。TraMineRにはPOSIXlt形式が必要だと思いますか?

これが私の生データのスニペットです(trcodeはイベントです)

頭(atus.act.short)

     tucaseid tustarttim tustoptime trcode
1 2.00701e+13   04:00:00   08:00:00  10101
2 2.00701e+13   08:00:00   08:20:00 110101
3 2.00701e+13   08:20:00   08:50:00  10201
4 2.00701e+13   08:50:00   09:30:00  20102
5 2.00701e+13   09:30:00   09:40:00 180201
6 2.00701e+13   09:40:00   11:40:00  20102

strptimeを使用して文字列をPOSIXltに変換します。

atus.act.short$starttime.new <- strptime(atus.act.short$tustarttim, format="%X")
atus.act.short$stoptime.new  <- strptime(atus.act.short$tustoptime, format="%X")

IDも2桁にカットしました

  atus.act.short$id <- atus.act.short$tucaseid-20070101070000

私は次のように新しいデータフレームになります:

   id       starttime.new        stoptime.new trcode
1  44 2012-08-03 04:00:00 2012-08-03 08:00:00  10101
2  44 2012-08-03 08:00:00 2012-08-03 08:20:00 110101
3  44 2012-08-03 08:20:00 2012-08-03 08:50:00  10201
4  44 2012-08-03 08:50:00 2012-08-03 09:30:00  20102
5  44 2012-08-03 09:30:00 2012-08-03 09:40:00 180201
6  44 2012-08-03 09:40:00 2012-08-03 11:40:00  20102
7  44 2012-08-03 11:40:00 2012-08-03 11:50:00 180201
8  44 2012-08-03 11:50:00 2012-08-03 12:05:00  20102
9  44 2012-08-03 12:05:00 2012-08-03 13:05:00 120303
10 44 2012-08-03 13:05:00 2012-08-03 13:20:00 180704
11 44 2012-08-03 13:20:00 2012-08-03 15:20:00  70104
12 44 2012-08-03 15:20:00 2012-08-03 15:35:00 180704
13 44 2012-08-03 15:35:00 2012-08-03 17:00:00 120303
14 44 2012-08-03 17:00:00 2012-08-03 17:20:00 180701
15 44 2012-08-03 17:20:00 2012-08-03 17:25:00 180701
16 44 2012-08-03 17:25:00 2012-08-03 17:55:00  70101
17 44 2012-08-03 17:55:00 2012-08-03 18:00:00 181203
18 44 2012-08-03 18:00:00 2012-08-03 19:00:00 120303
19 44 2012-08-03 19:00:00 2012-08-03 19:30:00 110101
20 44 2012-08-03 19:30:00 2012-08-03 21:30:00 120303
21 44 2012-08-03 21:30:00 2012-08-03 23:00:00  10101
22 44 2012-08-03 23:00:00 2012-08-03 23:03:00  10201
26 48 2012-08-03 06:45:00 2012-08-03 08:15:00  10201
27 48 2012-08-03 08:15:00 2012-08-03 08:45:00 180209
28 48 2012-08-03 08:45:00 2012-08-03 09:00:00  20902
29 48 2012-08-03 09:00:00 2012-08-03 11:00:00  50101
30 48 2012-08-03 11:00:00 2012-08-03 11:45:00 120312

次に、シーケンスオブジェクトを作成しようとします[library(TraMineR)を使用]

atus.seq <- seqdef(atus.act.short, informat = "SPELL", id="id")

そして、次のエラーが発生します。

as.matrix.data.frame(subset(data、、2))のエラー:dims[product0]がオブジェクトの長さと一致しません[9]

考え?

4

1 に答える 1

4

私はこれを回避するために、時間を分に変換し(stackoverflowに関する別の質問に続いて)、ステータスコードを文字(as.character)にし、seqformatを使用して、それを時間軸に割り当てました。新しいコードは次のようになります。

atus.seq2 <- seqformat(atus.act.short2, id="id", from="SPELL", to="STS", begin = "startmin", end = "stopmin", status="trcode", process = "FALSE")

于 2012-10-23T00:47:41.670 に答える