0

我正在研究一个以 hhmmss 格式报告交易时间的交易数据集。例如,204629、215450 等。
我想从给定的列中导出一个因子变量,其水平表示一天中的某些时间,例如 12-3 pm、3-6 pm 等。
我可以考虑使用 str_sub 函数来选择小时来自给定变量的值并将它们转换为因子。但是有没有更有效的方法来实现这一点?

4

1 回答 1

0

您可以使用dplyr::mutatestringr::str_sub创建hour列,然后使用cuthour列划分为您的周期。

library(dplyr)
library(stringr)
library(lubridate)

tibble(string = c("215450", "220102", "020129")) %>% 
  mutate(hour = str_sub(string, 1, 2) %>% as.numeric,
         minute = str_sub(string, 3, 4) %>% as.numeric,
         second = str_sub(string, 5, 6) %>% as.numeric,
         time = str_c(hour, minute, second, sep = ":") %>% hms()) %>% 
  mutate(period = cut(hour, breaks = 2, labels = c("period one", "period two")))

# A tibble: 3 x 6
  string  hour minute second time        period    
  <chr>  <dbl>  <dbl>  <dbl> <Period>    <fct>     
1 215450    21     54     50 21H 54M 50S period two
2 220102    22      1      2 22H 1M 2S   period two
3 020129     2      1     29 2H 1M 29S   period one
于 2020-04-02T20:19:10.530 回答