データベースに時間列があり、時間と分が「:」で区切られています。「:」を削除して、計算に数値時間を使用するため、時間フィールドが数値になるようにします。
入力: X 00:00 01:15 02:30
出力: X 0000 0115 0230
R は初めてです。ばかげた質問でしたら申し訳ありません。どんな助けでも大歓迎です。ありがとうございました。
データベースに時間列があり、時間と分が「:」で区切られています。「:」を削除して、計算に数値時間を使用するため、時間フィールドが数値になるようにします。
入力: X 00:00 01:15 02:30
出力: X 0000 0115 0230
R は初めてです。ばかげた質問でしたら申し訳ありません。どんな助けでも大歓迎です。ありがとうございました。
> x <- c("00:00", "01:15", "02:30")
> gsub(":", "", x)
[1] "0000" "0115" "0230"
本当に数値が必要な場合は、numeric
またはに強制することができますinteger
> as.numeric(gsub(":", "", x))
[1] 0 115 230
GSeeの答えはあなたが求めることをします。ただし、時間の単位で計算を行っている場合は、もっと簡単な方法を考えるかもしれません。
library(lubridate)
X <- hm(c("00:00", "01:15", "02:30")) # Converts to lubridate time objects
X + minutes(1)
# [1] "1M 0S" "1H 16M 0S" "2H 31M 0S"
X + weeks(2)
# [1] "14d 0H 0M 0S" "14d 1H 15M 0S" "14d 2H 30M 0S"
R 機能を使用して時刻を解析し、最初に日付/時刻に変換する方が賢明な場合があります。現時点では、「時間」値の非 10 進文字をキャプチャする方法はありません。300-259 は 41 ではなく 1 である必要があります。この一連のコマンドは、R の日時および日付関数の一部を示しています。
> X <- c('00:00', '01:15', '02:30')
> as.POSIXct(X, format="%H:%M")
[1] "2013-08-05 00:00:00 PDT" "2013-08-05 01:15:00 PDT" "2013-08-05 02:30:00 PDT"
これにより、今日の真夜中からの秒単位の差で結果が得られます。
> as.numeric(as.POSIXct(X, format="%H:%M") - as.POSIXct("2013-08-05 00:00:00 PDT"))
[1] 0 4500 9000
ここで、今日の日付を使用してみますが、as.POSIXct はこれが GMT.UCT 時間であると想定するため、7 時間のオフセットがあることに注意してください。
> as.numeric(as.POSIXct(X, format="%H:%M") - as.POSIXct(Sys.Date()))
[1] 7.00 8.25 9.50
> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))
[1] 0 4500 9000
したがって、7 時間 (=7*3600 秒) をシフトしてから分に変換して、プロセスを終了します。
> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))/60
[1] 0 75 150