2014-12-10 25 views
7

Mam następujący ramka danychKonwersja uniksowy znacznik czasu do datetime

> head(try) 
    creates  time 
1 128.29508 1417392072 
3 236.98361 1417392072 
7 98.45902 1417392072 
9 157.44068 1417392131 
10 227.38333 1417392131 
11 242.03390 1417392131 

> str(try) 
'data.frame': 102968 obs. of 2 variables: 
$ creates: num 128.3 237 98.5 157.4 227.4 ... 
$ time : Factor w/ 26418 levels "1417392071","1417392072",..: 2 2 2 3 3 3 3 3 5 5 ... 

jestem w stanie konwertować znacznik czasu UNIX do datetime stosując następujące metody próbowałem

> head(as.POSIXlt(as.numeric(try$time),origin="1970-01-01",tz="GMT")) 
[1] "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:03 UTC" "1970-01-01 00:00:03 UTC" 
[6] "1970-01-01 00:00:03 UTC" 

> head(as.POSIXct(as.character(try$time),tz="GMT")) 

Błąd jako. POSIXlt.character (x, tz, ...): ciąg znaków nie ma standardowego, jednoznacznego formatu:

> head(as.POSIXlt(as.POSIXct(as.vector(as.numeric(try$time)),origin="1970-01-01"))) 
[1] "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:03 UTC" "1970-01-01 00:00:03 UTC" 
[6] "1970-01-01 00:00:03 UTC" 

Nie jestem pewien, co tutaj robię nieprawidłowo.

+0

@akrun dzięki, to działa, ale nie masz pojęcia, dlaczego to musi być zrobione w ten sposób? – user3006691

+0

Przypuszczam, że Emer dodał pewne wyjaśnienie. – akrun

Odpowiedz

8

Musisz przekonwertować z Czynnika na Znak na Numer przed użyciem jako POSIXct. Funkcja spodziewa liczbę całkowitą jako unixtime

head(as.POSIXct(as.numeric(as.character(try$time)),origin="1970-01-01",tz="GMT")) 
+0

Próbowałem tego również i skończyło się błędem; > head (as.POSIXct (as.character (try $ time), origin = "1970-01-01", tz = "GMT")) Błąd w pliku .OSIXlt.character (x, tz, ...) : ciąg znaków nie ma standardowego, jednoznacznego formatu – user3006691

2

To dlatego, że epoka nie jest numeryczny, spróbuj przekształcenie go w szeregu i działa jak zachwytu!

try$time <- as.POSIXct(as.numeric(try$time), origin = '1970-01-01', tz = 'GMT') 
0

Spróbuj

head(as.POSIXct(as.integer(as.numeric(as.character(try$time))/1000.0), 
origin='1970-01-01', tz="GMT")) 
Powiązane problemy