r извлечь час из данных времени в символьном формате

У меня есть столбец, в котором хранятся данные о времени. Это в символьном формате.

c("04:00", "08:55", "15:30", "18:50", "19:15", "12:00")

Моя цель - извлечь час. Я пробовал несколько вариантов, lubridate :: hour, chron :: hour и т. Д., Они не работают. Я получаю несколько ошибок.

Окончательные результаты должны быть такими, как показано ниже

 04, 08, 15, 18, 19, 12

Какие-либо предложения ??


person Science11    schedule 21.08.2018    source источник


Ответы (3)


В базе R используйте substr:

h <- c("04:00", "08:55", "15:30", "18:50", "19:15", "12:00")
substr(h, 1, 2)
#[1] "04" "08" "15" "18" "19" "12"
person Rui Barradas    schedule 21.08.2018
comment
Я чувствую себя действительно глупо из-за этого. Спасибо, Руи, это было прекрасно. - person Science11; 21.08.2018

stringr + regex поможет

library(stringr)
str_extract(string = c("04:00", "08:55", "15:30", "18:50", "19:15", "12:00"),pattern = '^[:digit:]{2}')
[1] "04" "08" "15" "18" "19" "12"
person mjm    schedule 21.08.2018

просто чтобы добавить lubridate ответ:

library(lubridate)
library(tidyverse)

t <- c("04:00", "08:55", "15:30", "18:50", "19:15", "12:00")

t %>% 
  hm() %>% 
  hour()

Прежде чем использовать функции в lubridate, такие как lubridate::hour или lubridate::period_to_seconds, вам сначала нужно преобразовать ваши данные. Поскольку ваш вектор имеет формат час: мин, мы сначала используем lubridate::hm.

person FMM    schedule 21.08.2018