2011-10-13 9 views
6

私はxtsオブジェクトxを持っています。私はインデックスのタイムスタンプに基づいて特定の時間までforループを実行したい。xtsインデックスから時間を取得

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

インデックスの時間が16:40:00未満である限り、ループを実行したいとします。上記のインデックスのフォーマットを考慮して、どのように時間構成要素を取り除きますか?

答えて

4

これは、あなたがしたい場所のボールパークに入るはずです。 formatを使用すると、時間、分、秒の部分だけが抽出されます。 ?strptimeのヘルプページには、情報の抽出に使用される記号の詳細が示されています。

#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

おかげで、魅力が動作します。 1つの質問ですが、この時間コンポーネントを任意の時間、たとえば16:00:00と比較するにはどうすればよいでしょうか?私は試してみました:if(new.x> strptime( "16:00:00"、 "%H:%M:%S")ですが、new.xは歴史的なので新しい日付には今日の日付が入ります –

+0

@ED日付付きの新しい変数を作成したり、日付とともに現在の変数を作成することができます。 –

2

問題はタイムゾーンが正しくなっています。私のシステムでは「SAST」のtz仕様が有効ではありませんが、おそらくあなたにそれは次のようになります。

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

(UTC +2ように見えます。)そして、私は、私はそれを認識していない私のシステムについて言ったことを取り戻します。

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

だから使用:

x[ index(x) <= as.POSIXct("2011-10-12 16:44:00", tz= "Africa/Johannesburg")] 
関連する問題