2013-07-09 3 views
-1

Как я могу добавить сезон в качестве фактора в зависимости от дат в R? У меня есть таблица с датами 4 года, и мне нужно добавить сезон в колонке, который будет смотреть на месяц и день, и решить, в каком сезоне он. Я беру некоторые фиксированные даты для каждого сезона независимо от года.Добавление фактора сезона на основе даты в R

+1

Можете ли вы предоставить свои данные? Это довольно прямолинейно, но точное решение будет зависеть от того, как выглядят ваши данные. Возможно, дайте нам вывод 'dput (head (df))', где 'df' - ваш dataframe. – Thomas

+0

@ user2563925, пожалуйста, дайте мне знать, если это решит вашу проблему. –

ответ

1

Я рекомендую quarter() от lubridate пакета:

library(lubridate) 
dates <- structure(c(15238, 15730, 15362, 15478, 15764, 15635, 15372, 
        15768, 15243, 15377), class = "Date") # example data 
dates 
# > dates 
# [1] "2011-09-21" "2013-01-25" "2012-01-23" "2012-05-18" "2013-02-28" "2012-10-22" "2012-02-02" 
# [8] "2013-03-04" "2011-09-26" "2012-02-07" 
dates <- as.data.frame(dates) 
dates$q <- quarter(dates$dates) 
# dates q 
# 1 2011-09-21 3 
# 2 2013-01-25 1 
# 3 2012-01-23 1 
# 4 2012-05-18 2 
# 5 2013-02-28 1 
# 6 2012-10-22 4 
# 7 2012-02-02 1 
# 8 2013-03-04 1 
# 9 2011-09-26 3 
# 10 2012-02-07 1 
dates$season <- NA # If you really want seasons (string) proceed... 
dates <- within(dates, {season[q == 1] <- "spr" 
         season[q == 2] <- "sum" 
         season[q == 3] <- "fall" 
         season[q == 4] <- "win"}) 
# dates q season 
# 1 2011-09-21 3 fall 
# 2 2013-01-25 1 spr 
# 3 2012-01-23 1 spr 
# 4 2012-05-18 2 sum 
# 5 2013-02-28 1 spr 
# 6 2012-10-22 4 win 
# 7 2012-02-02 1 spr 
# 8 2013-03-04 1 spr 
# 9 2011-09-26 3 fall 
# 10 2012-02-07 1 spr 
Смежные вопросы