2017-07-05 14 views
2

ファイルからインポートする時間があります。カラムは、数値とみなされ、以下のようである:数値の時刻形式をPOSIXltに変換する

head(RawData$TimeStart, 10) [1] 0.00 0.00 0.00 30.19 0.00 25.00 0.00 9.20 0.00 0.00

このデータは、例えば0.0分で、30分間、19秒(30.19)で採取されたサンプルを表します。

私はこのコラムは、今、次の形式に変換されることを望む:

> head(RawData$Converted, 10) 
[1] "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:30:19 AEST" 
[5] "2017-07-05 00:00:00 AEST" "2017-07-05 00:25:00 AEST" "2017-07-05 00:00:00 AEST" "2017-07-05 00:09:20 AEST" 
[9] "2017-07-05 00:00:00 AEST" "2017-07-05 00:00:00 AEST" 

私は次のことを試してみました: RawData$Converted <- as.POSIXct(RawData$TimeStart, origin='1970-01-01', tz='Australia/Darwin')

をしかし、これは今日の日付/時間を与えるものではありません。私は非常に混乱しているので、どんな助けも大いに評価されるでしょう。

+0

時間は分ですか? – akrun

+3

0.00 =真夜中から7秒後ですか?あなたが私たちに十分な小数を示していないか、あなたの意図した結果が間違っていると思います。ところで、あなたは 'head(TimeStart)'と 'head(Time End)'を表示しています - これは意図的なものですか? – thelatemail

+0

分です.2番目 - フォーマットは別のインポートされたソースからであり、私のものではありません! AnalysedData $ TimeEnd列は私の意図した出力ではありません。上記のように、その列と同じ形式が必要です。 – user2716568

答えて

3
は秒にそれらすべてを変換するために数値をブレークし、今日のための日時にそれを追加し

x <- c(0.00,0.00,0.00,30.19,0.00,25.00,0.00,9.20,0.00,0.00) 
as.POSIXct(format(Sys.Date()), tz="Australia/Darwin") + (floor(x)*60) + ((x-floor(x))*100) 
# [1] "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:30:19 ACST" 
# [5] "2017-07-05 00:00:00 ACST" "2017-07-05 00:25:00 ACST" "2017-07-05 00:00:00 ACST" "2017-07-05 00:09:20 ACST" 
# [9] "2017-07-05 00:00:00 ACST" "2017-07-05 00:00:00 ACST" 

これは、ダーウィンの時間にACST代わりのAESTですが、私はそれが何をしたいのです集まります。

+0

ありがとうございました! ACSTの代わりにAESTが欲しいのですか? – user2716568

+2

すべての可能なタイムゾーンの 'OlsonNames()'を参照してください。 – SymbolixAU

+1

@ user2716568 - あなたのタイムゾーンを明示的に指定するだけです - 'tz =" Australia/Brisbane "'または 'tz =" Australia/Sydney "' - 当時の夏時間の節約。夏時間を考慮する必要がなければ、通常は 'tz =" UTC "'で作業します。 – thelatemail

関連する問題