Lubridate: расширить вывод минут, чтобы иметь длину 3 - PullRequest
0 голосов
/ 04 мая 2018

То, что я пытаюсь сделать, это заставить lubridate сделать так, чтобы минутная часть преобразования всегда имела длину 3. Это так, чтобы дальнейшая обработка имела одинаковую длину. Например, время 12:00 преобразуется в 12H 00M 0S вместо значения по умолчанию 12H 0M 0S. Я ничего не вижу в справке для hm (), поэтому может потребоваться использовать что-то вне пакета lubridate.

Ниже приведен пример кода этой идеи:

library (lubridate)
df <- data.frame("Time" = c("13:04", "13:55", "8:00", "8:45"))
df$Time <- hm(df$Time)

# Desired output
# 13H 04M 0S
# 13H 55M 0S
# 8H 00M 0S
# 8H 45M 0S

1 Ответ

0 голосов
/ 04 мая 2018

Этот код получит желаемый результат:

library (lubridate)
df <- data.frame("Time" = c("13:04", "13:55", "8:00", "8:45"))

paste0(hour(hm(df$Time)), "H ", sprintf("%02d", minute(hm(df$Time))), "M 0S")
"13H 04M 0S" "13H 55M 0S" "8H 00M 0S"  "8H 45M 0S" 

Тем не менее, я не знаю, какую "дальнейшую обработку" вы намереваетесь выполнить, но этот формат не позволит использовать последующие вычисления времени / чисел.

hour(hm(df$Time)) #gives the hours
minute(hm(df$Time)) #gives the minutes
sprintf("%02d", ...argument2...) # forces the 2nd argument call (here the minutes) of that function to consist of 2 characters, which adds the zeroes when needed 
paste0() #pastes the hours and minutes together as 1 string, with the string "H " inbetween and the string "M 0S" at the end
...