2013-04-13 6 views
10

多くの人が時間を止めて日付を保持する方法を尋ねますが、それ以外の方法はどうですか?与えられた:日付を削除して時間を守る

myDateTime <- "11/02/2014 14:22:45" 

私が見てみたい:必要はありません

myTime 
[1] "14:22:45" 

タイムゾーン。

は、私はすでに目的は、いくつかの上に記録されたイベントを分析することである

as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S") 

[1] "2013年4月13日午前14時22分45秒NZST"(他の回答から)試してみました1日の時間帯のみ。

おかげ

編集:

をそれはとてもたびに、日付を持っている必要があり、何も純粋な「時間」オブジェクトはありませんが判明しました。私はその結果に算術演算を実行する必要があるため

は最後に、私は、
as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01") 

ではなく、文字のソリューション

を使用しました。この解決策は、日付が一貫して制御できることを除いて、私の元のものと似ています。この場合は "2000-01-01"ですが、実行時に現在の日付が使用されました。

+1

私は最終的にクラス「times」のオブジェクトを持つchronを見つけました。これにより、追加がずっと簡単になります。 18:00 + 12:00 = 1.25日。 – nacnudus

+0

'hms :: as.hms(x)'を呼び出すと、 'hms'パッケージを使うこともできます。 – Von

答えて

4

グリニッジ標準時(GMT)の日の時間が問題に役立つ場合は、剰余演算子の%%でこれを得ることができ、剰余は86400(1日の秒数)になります。

stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02") 
as.numeric(as.POSIXct(stamps)) %% 86400 
## [1] 0 1 2 
+0

マジックナンバー['60 * 60 * 24'](https://www.google.com/search?q=60*60*24)が大好きです。 – Jim

17

あなたはformat機能を探していると思います。

(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S")) 
#[1] "2014-02-11 14:22:45" 
format(x, "%H:%M:%S") 
#[1] "14:22:45" 

character、ない「時間」ですが、それはあなたが何を意味だ場合aggregateのようなもので動作するであろうと、「一日の時間によって、数日にわたって記録されたイベントを分析します。」

+0

strptime関数の問題に直面しています。このような日付の直前にテキストを追加した場合: strptime( "hello Tue、23 Mar 2010 14:36:38 -0400"、 "%a、%d%b%Y%H:%M:%S% z ") #NA 問題がどこにあるのか – Ankit

+0

@Ankitあなたは' format'引数でそれを考慮する必要があります。これを試してください: 'strptime(" hello Tue、23 Mar 2010 14:36:38 -0400 "、" hello%a、%d%b%Y%H:%M:%S%z ")' – GSee

+0

@GSee回答。これは私が探していたものです。 – Gandalf

関連する問題