Tôi đang cố gắng phân tích chuỗi bằng cách sử dụng dữ liệu nhật ký thời gian (American Time Use Survey) bằng TraMineR trong R. Tôi có dữ liệu như dữ liệu SPELL (id, thời gian bắt đầu, thời gian dừng, sự kiện) nhưng tôi nhận được lỗi sau khi cố gắng chuyển nó sang STS hoặc dữ liệu SPS:Sử dụng dữ liệu nhật ký thời gian với TraMineR
Error in as.matrix.data.frame(subset(data, , 2)) : dims [product 0] do not match the length of object [9]
tôi tin rằng nó có cái gì để làm với làm thế nào tôi chuyển đổi thời gian của tôi (như nhân vật) để loại ngày/giờ. Tôi tin rằng TraMineR yêu cầu định dạng POSIXlt?
Dưới đây là một đoạn dữ liệu thô của tôi (trcode là sự kiện)
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
tôi sử dụng strptime để chuyển đổi chuỗi ký tự để 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")
Tôi cũng cắt ID chỉ xuống hai chữ số
atus.act.short$id <- atus.act.short$tucaseid-20070101070000
tôi kết thúc với một khung dữ liệu mới như sau:
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
Sau đó, tôi cố gắng tạo ra một đối tượng chuỗi [sử dụng thư viện (TraMineR)]
atus.seq <- seqdef(atus.act.short, informat = "SPELL", id="id")
Và tôi nhận được lỗi sau:
Error in as.matrix.data.frame(subset(data, , 2)) : dims [product 0] do not match the length of object [9]
Suy nghĩ?
tôi đã quản lý để làm việc xung quanh này bằng cách chuyển đổi thời gian để phút (sau đây một câu hỏi về stackoverflow), làm cho mã trạng thái một nhân vật (as.character), sử dụng seqformat, và gán nó vào trục thời gian. Mã mới đọc: 'atus.seq2 <- seqformat (atus.act.short2, id =" id ", từ =" SPELL ", tới =" STS ", bắt đầu =" startmin ", end =" stopmin ", status =" trcode ", process =" FALSE ")' – mCorey
Bạn có thể đăng câu trả lời này làm câu trả lời và chấp nhận câu trả lời đúng không? –