2016-11-03 11 views
0

"212259"のような数値をdatetime形式に変換したいと考えています。 これらの数字は、1日の時間、分、秒を指定します。私は既にparse_date_time((x)、orders = "HMS"))またはrubridateパッケージからstrptime(x = x、format = "%H%M%S")を使用しましたが、また、その日の早い場合には値「1158」を含む。だから時間の文字はありません。数秒でもよい。 (12)、1日12秒間。 誰かが私がそれを処理できることを知っていますか?私はこれらの値を特定の日の列に結合して、それに算術演算をしたい。R:異なる長さの数値を日付に変換する方法

敬具

答えて

1

あなたはこのような何かを必要としていますか?

toTime <- function(value) { 
    padded_value = str_pad(value, 6, pad = "0") 

    strptime(padded_value, "%H%M%S") 
} 

str_padだから、数値だけの先行ゼロのカットと仮定stringrパッケージ

0

からですが、私はあなたがそれらを再度追加する文字に変換し、お勧めします。

convert_numeric <- function(x){ 
    if (nchar(x) == 6) { 
    x <- as.character(x) 
    return(x) 
    } else if (nchar(x) == 4) { 
    x <- as.character(paste0("00",x)) 
    return(x) 
    } else if (nchar(x) == 2) { 
    x <- as.character(paste0("0000",x)) 
    return(x) 
    } 
} 

のは、ベクトルは、あなたがそれに言及する例があり、あなたの時間を言ってみましょう:

times <- c(212259, 1158, 12) 

あなたはその後、取得するためにsapplyを使用することができますあなたはの線に沿って何かが、それを行うための関数を使用することができますあなたは、日付・時間変換のために言及機能を使用するには適切なフォーマット:

char_times <- sapply(times, convert_numeric) 
# [1] "212259" "001158" "000012" 

strptime(char_times, format = "%H%M%S") 
# [1] "2016-11-03 21:22:59 CET" "2016-11-03 00:11:58 CET" "2016-11-03 00:00:12 CET" 
+0

こんにちは、 を私は私の問題の解決策を見つけたあなたの助けに感謝。 ありがとうm8s! –

関連する問題