r 从字符格式的时间数据中提取小时

r extract hour from time data in character format

我有一个存储时间数据的列。这是字符格式。

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

我的目标是提取小时数。我尝试了几个选项,lubridate::hour、chron::hour 等这些都不起作用。我收到几个错误。

最终结果应该是这样的

 04, 08, 15, 18, 19, 12

有什么建议吗??

stringr + 正则表达式就可以了

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"

在基础 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"

只是添加一个 lubridate 答案:

library(lubridate)
library(tidyverse)

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

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

在使用 lubridate::hourlubridate::period_to_seconds 等 lubridate 中的函数之前,您首先需要转换数据。因为你的vector格式是hour:min,那我们先用lubridate::hm.