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

时间:2018-08-21 17:05:59

标签: r time hour

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

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

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

最终结果应如下所示

 04, 08, 15, 18, 19, 12

任何建议??

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分:2)

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"

答案 2 :(得分:0)

仅添加一个lubridate答案:

library(lubridate)
library(tidyverse)

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

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

首先需要转换数据,然后再使用lubridate中的函数,例如lubridate::hourlubridate::period_to_seconds。由于您的向量格式为hour:min,因此我们首先使用lubridate::hm