0

Rで24時間以上の時間を換算したいです。

たとえば、[HH:MM] のような時間と分を含むデータフレームがあります。

[1] 「111:15」「221:15」「111:15」「221:15」「42:05」

次のように時間単位で変換したい:

「111.25」「221.25」「111.25」「221.25」「42.08333333」

as.POSIXct() 

機能は一般的な目的で機能しますが、24 時間以上は機能しません。

4

4 に答える 4

0

文字列を正規表現で解析するだけです。の前のビットをつかみ、60 で割った:後のビットを追加します。:

> foo = c("111:15", "221:15", "111:15", "221:15", "42:05")
> foo
[1] "111:15" "221:15" "111:15" "221:15" "42:05" 
> as.numeric(gsub("([^:]+).*", "\\1", foo)) + as.numeric(gsub(".*:([0-9]{2})$", "\\1", foo))/60
[1] 111.25000 221.25000 111.25000 221.25000  42.08333
于 2013-11-05T10:14:30.867 に答える
0

もう 1 つの可能性は、次のようなベクトル化された関数です。

FUN <- function(time){
    hours <- sapply(time,FUN=function(x) as.numeric(strsplit(x,split=":")[[1]][1]))
    minutes <- sapply(time,FUN=function(x) as.numeric(strsplit(x,split=":")[[1]][2]))
    result <- hours+(minutes/60)
    return(as.numeric(result))
}

時間と分を抽出するために使用する場所でstrsplit、分を 60 で割った後に合計を取ります。

その後、次のように関数を使用できます。

FUN(c("111:15","221:15","111:15","221:15","42:05"))

[1] 111.25000 221.25000 111.25000 221.25000  42.08333
于 2013-11-05T10:18:40.690 に答える