Мы можем использовать lubridate
и dplyr
пакет. Преобразовать столбец в класс Period
и извлечь из него hour
. Назначьте "day"
и "night"
в соответствии с hour
дня и удалите строки, которые не лежат в одном из этих интервалов.
library(lubridate)
library(dplyr)
df %>%
mutate(hour = hour(hm(hour1)),
D_N = case_when(hour %in% 10:15 ~ "day",
hour %in% 22:23 | hour %in% 1:3 ~ "night",
TRUE ~ NA_character_)) %>%
filter(!is.na(D_N))
# hour1 hour D_N
#1 10:31 10 day
#2 01:10 1 night
#3 12:03 12 day
#4 14:51 14 day
данные
df <- structure(list(hour1 = structure(c(2L, 1L, 3L, 5L, 4L), .Label = c("01:10",
"10:31", "12:03", "14:51", "16:03"), class = "factor")),
class = "data.frame", row.names = c(NA, -5L))