将时间变量转换为 R 中的因子
Convert time variable into factor in R
我正在处理一个以 hhmmss 格式报告交易时间的交易数据集。例如,204629、215450 等
我想从给定的列中导出一个因子变量,其水平表示一天中的某些 小时 ,例如中午 12-3 点、下午 3-6 点等
我可以考虑使用 str_sub 函数将给定变量的 select 小时值转换为因子。但是有没有更有效的方法来实现这一点?
您可以使用 dplyr::mutate
和 stringr::str_sub
创建 hour
列,然后使用 cut
将 hour
列划分为您的期间。
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
我正在处理一个以 hhmmss 格式报告交易时间的交易数据集。例如,204629、215450 等
我想从给定的列中导出一个因子变量,其水平表示一天中的某些 小时 ,例如中午 12-3 点、下午 3-6 点等
我可以考虑使用 str_sub 函数将给定变量的 select 小时值转换为因子。但是有没有更有效的方法来实现这一点?
您可以使用 dplyr::mutate
和 stringr::str_sub
创建 hour
列,然后使用 cut
将 hour
列划分为您的期间。
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