我有一列存储时间数据。这是字符格式。
c("04:00", "08:55", "15:30", "18:50", "19:15", "12:00")
我的目标是提取小时。我尝试了几个选项,lubridate :: hour,chron :: hour等,这些都不起作用。我遇到几个错误。
最终结果应如下所示
04, 08, 15, 18, 19, 12
任何建议??
答案 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::hour
或lubridate::period_to_seconds
。由于您的向量格式为hour:min,因此我们首先使用lubridate::hm
。