Estoy tratando de hacer un análisis de secuencia utilizando datos del diario de tiempo (American Time Use Survey) usando TraMineR en R. Tengo los datos como datos de SPELL (id, hora de inicio, hora de detención, evento) pero recibo el siguiente error al intentar convertir a STS o datos de MSF:Uso de datos del diario de tiempo con TraMineR
Error in as.matrix.data.frame(subset(data, , 2)) : dims [product 0] do not match the length of object [9]
creo que tiene algo que ver con la forma en convierto mi tiempo (como personaje) a tipos de fecha/hora. Creo que TraMineR requiere un formato POSIXlt?
Aquí hay un fragmento de mis datos en bruto (trcode es el caso)
head(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
utilizo strptime para convertir las cadenas de caracteres a 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")
También cortar el ID hasta solo dos dígitos
atus.act.short$id <- atus.act.short$tucaseid-20070101070000
termino con una nueva trama de datos de la siguiente manera:
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
entonces trato de crear un objeto de secuencia [usando la biblioteca (traminer)]
atus.seq <- seqdef(atus.act.short, informat = "SPELL", id="id")
Y me sale el siguiente error:
Error in as.matrix.data.frame(subset(data, , 2)) : dims [product 0] do not match the length of object [9]
¿Pensamientos?
he logrado solucionar este convirtiendo el tiempo de minutos (después de otro preguntas sobre stackoverflow), haciendo que el código de estado de un personaje (as.character), utilizando seqformat, y asignarlo a un eje de tiempo. El nuevo código dice: 'atus.seq2 <- seqformat (atus.act.short2, id =" id ", from =" SPELL ", to =" STS ", begin =" startmin ", end =" stopmin ", status =" trcode ", process =" FALSE ")' – mCorey
¿Puedes publicar esto como respuesta y aceptarlo como el correcto? –