2017-01-10 8 views
1

一部は次のようになります。ちなみにstrptime()からのみ時間を抽出する方法は?データの

head(my_data[,c(1,2)], 3) 
     Date Time 
1 16/12/2006 17:24:00 
2 16/12/2006 17:25:00 
3 16/12/2006 17:26:00 

str() $Date, $Timeは今、すべてのCHRです。

私は正しい形式で2つのCOLSでそれらを維持したいので、私は日付フォーマットで第一COLを取得するために

x <- as.Date(my_data$Date, "%d/%m/%Y") 

を使用します。

x[1:5] 
[1] "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16" 

しかし、第二コルでは、ときに私使用しようとしています

y <- strptime(my_data$Time, "%H:%M:%S") 

出力には、コンピュータのデフォルトの日付とタイムゾーンが自動的に追加されます。

y[1:4] 
[1] "2017-01-10 17:24:00 CST" "2017-01-10 17:25:00 CST" 
[2] "2017-01-10 17:26:00 CST" "2017-01-10 17:27:00 CST" 

日付と時間帯を使わずに時間を保存したい場合はどうすればよいですか?
sub()正規表現はこれを達成する唯一の方法ですか?

+2

と別の方法として、あなたが純粋な時間オブジェクトを持っているしたい場合は、そのようなクラスを定義するパッケージを必要としています。パッケージ 'chron'を使うことができます。しかし、私は日付と時刻を 'POSIXct'オブジェクトに組み合わせることを提案します。うるう年やうるう秒などの煩わしさが考慮される必要があります。 – Roland

答えて

0

我々は

sub(".*\\s+", "", y) 
#[1] "17:24:00" "17:25:00" "17:26:00" 

'時間' 成分を抽出するsubを使用して、我々はtimeクラスをしたい場合、我々はformatにを使用することができます

chronから
library(chron) 
times(my_data$Time) 
#[1] 17:24:00 17:25:00 17:26:00 
+0

ありがとうございました!私はそれが私が得たいと思うものだと思う。 'chron'パッケージ。 – hepeng

0

timesを使用することができます時間成分を抽出する

format(strptime(y, "%H:%M:%S"),"%H:%M:%S") 

lubridateパッケージ

library(lubridate) 
hms(my_data$Time) 
+0

'format'では、' str() 'が' chr'を取得して時刻を取得できます。しかし、 'format()'は私のコードの他の部分にとって非常に役に立ちます。ありがとう! – hepeng

+0

@hepeng 'lubridate'から' hms'関数を試してみてください。 –

関連する問題