2011-10-13 33 views
6

Xts nesnesine sahibim x. Dizindeki zaman damgasını temel alarak belirli bir zamana kadar bir for döngüsü çalıştırmak istiyorum.Xts dizininden zamanı al

> index(x) 
[1] "2011-10-12 16:44:00 SAST" 

ben endekste süresi 16:40:00 söylemek daha az olduğu sürece benim döngü çalıştırmak istiyorum düşünelim. Yukarıdaki dizinin formatı göz önüne alındığında, zaman bileşenini nasıl çıkarabilirim?

cevap

4

Bu, sizi olmak istediğiniz yere park eder. format'u kullanarak, sadece saat, dakika ve saniye bölümünü çıkarırsınız. ?strptime Yardım sayfası, bilgilerin çıkarılması için kullanılan semboller hakkında daha fazla ayrıntı verir.

#if you don't have your string in an appropriate format yet 
(x <- strptime("2011-10-12 16:44:00 SAST", format = "%Y-%m-%d %H:%M:%S")) 
    [1] "2011-10-12 16:44:00" 
class(x) 
    [1] "POSIXlt" "POSIXt" 
(new.x <- format(x, format = "%H:%M:%S")) 
    [1] "16:44:00" 
+0

sayesinde, bir çekicilik çalışır. Yine de bir soru, bu zaman bileşenini keyfi bir zamana göre karşılaştırmak için 16:00:00 diyelim, nasıl giderim? Denedim: eğer (new.x> strptime ("16:00:00", "% H:% M:% S"), ancak yeni bir tarih olduğu gibi, onu almak gibi görünmüyor. değer ve yeni saat bugünün tarihine sahiptir –

+0

@ED Ben tarih ekli ile yeni bir değişken oluşturabilir, ya da geçerli değişkeninizi de tarih ile. –

2

Sorun, saat dilimini düzeltmektir. Benim sistemde "SAST" nin tz Spec geçerli değil ama belki senin üzerinde öyle olacak:

x[ index(x) < as.POSIXct("2011-10-12 16:44:00", tz= SAST") ] 

(. UTC + 2 gibi görünüyor) Ve benim sistem tanımıyorsa hakkında söylediklerimi geri alıyorum .

as.POSIXct("2011-10-12 16:44:00", tz= "Africa/Johannesburg") 
# [1] "2011-10-12 16:44:00 SAST" 

Yani kullanın:

x[ index(x) <= as.POSIXct("2011-10-12 16:44:00", tz= "Africa/Johannesburg")] 
İlgili konular