Отметьте время суток утром, днем и вечером в R
Как я могу пометить время суток (утром, днем и вечером) для заданных временных отметок?
Начальные данные
Id Time_stamp
3083188c 2016-08-29 13:10:51
924d500e 2016-08-29 09:22:33
ad4dd7ff 2016-08-25 20:29:35
Конечные данные
Id Time_stamp Time_of_day
3083188c 2016-08-29 13:10:51 Afternoon
924d500e 2016-08-29 09:22:33 Morning
ad4dd7ff 2016-08-25 20:29:35 Evening
2 ответа
Вы можете достичь этого с lubridate
а также cut
,
library(lubridate)
# transform into date time column (if it is not already one)
df$Time_stamp <- ymd_hms(df$Time_stamp)
# create breaks
breaks <- hour(hm("00:00", "6:00", "12:00", "18:00", "23:59"))
# labels for the breaks
labels <- c("Night", "Morning", "Afternoon", "Evening")
df$Time_of_day <- cut(x=hour(df$Time_stamp), breaks = breaks, labels = labels, include.lowest=TRUE)
df
Id Time_stamp Time_of_day
1 3083188c 2016-08-29 13:10:51 Afternoon
2 924d500e 2016-08-29 09:22:33 Morning
3 ad4dd7ff 2016-08-25 20:29:35 Evening
данные:
df <- structure(list(Id = c("3083188c", "924d500e", "ad4dd7ff"),
Time_stamp = c("2016-08-29 13:10:51", "2016-08-29 09:22:33", "2016-08-25 20:29:35")),
.Names = c("Id","Time_stamp"),
class = "data.frame",
row.names = c(NA, -3L))
запустив приведенный выше код, я получаю сообщение об ошибке., Ошибка: присвоенные данные
cut(...)
должны быть совместимы с существующими данными. x Существующие данные состоят из 4 строк. x Назначенные данные содержат 0 строк. i Повторно используются только векторы размера 1. Запустить
rlang::last_error()
чтобы узнать, где произошла ошибка. Дополнительно: Предупреждающие сообщения: 1: Неизвестный или неинициализированный столбец:
Time_stamp
. 2: tz(): не знаю, как вычислить часовой пояс для объекта класса NULL; возвращается "UTC". Это предупреждение станет ошибкой в следующей основной версии lubridate.