2009-12-25 18 views
45

Birden fazla ölçüm listesi var. Her listede bir dize olarak ("2009-12-24 21: 00: 07.0") oluşturulmuş timestramp vardır ve listedeki her ölçümün 5 saniye ile ayrıldığını biliyorum. Tüm verileri büyük bir veri tablosunda birleştirmek istiyorum. R. Daha sonra, iki ölçümün zaman farkına kolayca erişmek istiyorum. Bu yüzden, verileri karakterlerden farklı bir şeye dönüştürmeliyim.Zaman damgalarıyla uğraşmak R

Süreleri kaydetmek için hangi biçimi kullanmalıyım? Kullanmam gereken bir paketin bazı zaman formatı var mı?

cevap

58

(standart) isteyen veya alt içeren POSIXlt olarak uzun biçim ((esas devirde yana kesirli saniye temsil eden bir çift) bir POSIXct gibi 'kompakt bir şekilde' bulunabilmektedir taban R POSIXt türü -elementler). Serin şey vb aritmetik bu tanımlanmış olmasıdır - help(DateTimeClasses)

Hızlı örneğe bakın:

R> now <- Sys.time() 
R> now 
[1] "2009-12-25 18:39:11 CST" 
R> as.numeric(now) 
[1] 1.262e+09 
R> now + 10 # adds 10 seconds 
[1] "2009-12-25 18:39:21 CST" 
R> as.POSIXlt(now) 
[1] "2009-12-25 18:39:11 CST" 
R> str(as.POSIXlt(now)) 
POSIXlt[1:9], format: "2009-12-25 18:39:11" 
R> unclass(as.POSIXlt(now)) 
$sec 
[1] 11.79 

$min 
[1] 39 

$hour 
[1] 18 

$mday 
[1] 25 

$mon 
[1] 11 

$year 
[1] 109 

$wday 
[1] 5 

$yday 
[1] 358 

$isdst 
[1] 0 

attr(,"tzone") 
[1] "America/Chicago" "CST"    "CDT"    
R> 

bunları okurken gelince, kolay çok fark gelince help(strptime)

, bkz:

R> Jan1 <- strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S") 
R> difftime(now, Jan1, unit="week") 
Time difference of 51.25 weeks 
R> 

Son olarak, zoo package, ilişkili tarih/saate sahip matris için son derece çok yönlü ve iyi belgelenmiş bir kapsayıcıdır e endeksleri.

+13

Teşekkürler. R fonksiyonları için isim yapan insanlar zalimdir. Yani POSIXlt'in zamanla yapacak bir şeyi olduğunu nasıl tahmin etmelisiniz? – Christian

+6

Ama 'help.search (" tarih saati ") komşu işlevleri keşfetti. –

+3

@DirkEddelbuettel evet, ve bu yararlı. Her neyse bu kötü adlandırma için bir bahane değil. Daha okunaklı kod, belgelere ihtiyaç duymadan, daha iyi. – nandinga