Допустим, у меня есть дата в R, и она отформатирована следующим образом.
date
2012-02-01
2012-02-01
2012-02-02
Есть ли способ в R добавить еще один столбец с днем недели, связанным с датой? Набор данных действительно большой, поэтому нет смысла проходить вручную и вносить изменения.
df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02"))
Таким образом, после добавления дней это будет выглядеть так:
date day
2012-02-01 Wednesday
2012-02-01 Wednesday
2012-02-02 Thursday
Это возможно? Может кто-нибудь указать мне пакет, который позволит мне сделать это? Просто пытаюсь автоматически сгенерировать день по дате.
weekdays
чтобы получить номер дня недели, как вы используетеas.POSIXlt
?setNames(0:6, c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))[weekdays(as.Date(df$date))]
. Если вам не нравятся имена, вы можете обернутьunname()
их.Используйте
lubridate
пакет и функциюwday
:источник
abbr = FALSE
Посмотрите вверх
?strftime
:источник
'%u'
вместо'%A'
Допустим, вы хотите, чтобы неделя начиналась в понедельник (вместо значения по умолчанию в воскресенье), тогда полезно следующее:
Результатом являются дни в интервале [0, .., 6].
Если вы хотите, чтобы интервал был [1, .. 7], используйте следующее:
... или, альтернативно:
источник
week_start
:wday(df$date, label = TRUE, week_start = 1)
Это должно сделать свое дело
источник
источник
Из формы комментария JStrahl
format(as.Date(df$date),"%w")
получаем номер текущего дня:as.numeric(format(as.Date("2016-05-09"),"%w"))
источник