2014-12-10 25 views
7

içine Unix zaman damgasını dönüştürün bendatetime

> 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 ... 

ben olarak

> 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")) 

Hata

çalıştı aşağıdaki yöntemleri kullanarak datetime içine UNIX zaman damgası dönüştürmek alamıyorum aşağıdaki veri dilimi var. POSIXlt.character (x, tz, ...): karakter dizgisi, standart olarak belirtilmemiş bir biçimde değil

> 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" 

Burada yanlış yaptığımdan emin değilim.

+0

@akrun sayesinde deneyin, bu çalışır, ancak bu şekilde yapılmalıdır neden olarak bir fikrin var mı? – user3006691

+0

Emer, bir açıklama ekledi – akrun

cevap

8

As.POSIXct'i kullanmadan önce Faktör'den Karaktere Numara Çevirmek zorundasınız. işlevi, bir Unixtime

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

Bunu denedim ve bir hata ile sona erdi; > head (as.POSIXct (as.character ($ time deneyin), origin = "1970-01-01", tz = "GMT")) . AS.POSIXlt.character hatası (x, tz, ...) : karakter dizesi, standart bir net olmayan biçimde değil – user3006691

2

olarak bir tamsayı bekliyor O dönem sayısal olmadığı için, bir dizi halinde çevirmeyi deneyin ve hayret gibi çalışır var!

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

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