2016-11-03 6 views
0

Ich möchte einen numerischen Wert wie "212259" in ein Datetime-Format übertragen. Diese Zahlen geben die Stunden, Minuten und Sekunden eines Tages an. Ich habe bereits parse_date_time ((x), orders = "HMS")) oder aus dem lubridate-Paket: strptime (x = x, format = "% H% M% S"), aber mein Problem ist, dass diese Spalten könnten enthalten auch Werte "1158", wenn es früh am Tag war. So gibt es beispielsweise keinen Charakter für die Stunden. Es könnte auch nur Sekunden sein, z.B. (12) für die 12. Sekunde eines Tages. Kennt jemand Sie kann ich damit umgehen? Ich möchte diesen Wert mit der Spalte des bestimmten Tages kombinieren und etwas rechnen.R: wie man Zahlen unterschiedlicher Länge in die Datumszeit überträgt

Mit freundlichen Grüßen

Antwort

1

Benötigen Sie so etwas?

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

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

str_pad vom stringr Paket ist

0

So unter der Annahme, dass die numerischen schneidet nur die führenden Nullen, würde ich vorschlagen, dass Sie zum Charakter umwandeln und sie dann erneut hinzufügen. Sie könnten eine Funktion verwenden, um das zu tun, etwas entlang der Linien von:

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) 
    } 
} 

Lassen Sie uns sagen, dass Ihre Zeiten Vektor die Beispiele hat erwähnen Sie daran:

times <- c(212259, 1158, 12) 

Sie dann sapply verwenden könnte das bekommen richtiges Format um die Funktionen verwenden Sie für Datum-Zeitumstellung erwähnen:

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

Hallo, dank Ihrer Hilfe, die ich eine Lösung für mein Problem gefunden. Vielen Dank m8s !! –

Verwandte Themen