дата классификации в R

Я работаю с набором данных в R, где основной интерес представляет дата. (Это связано с армейскими стычками, и дата стычки записывается). Я хотел проверить, было ли это более вероятным в данный сезон, или незадолго до праздника и т. д., поэтому я хочу иметь возможность видеть, сколько дат летом, зимой и т. д., но я как бы в потеря для того, как это сделать.


person deeno    schedule 22.02.2015    source источник
comment
Вы пробовали что-нибудь?   -  person NicE    schedule 23.02.2015
comment
Две ценные ссылки: 1. Что вы пробовали?; 2. Quick-R   -  person Barranka    schedule 23.02.2015


Ответы (1)


Общая рекомендация: используйте пакет lubridate для преобразования строк в даты, если у вас возникли проблемы с этим. используйте cut() для разделения дат на диапазоны, например:

someDates <- c( '1-1-2013',
               '2-14-2013',
               '3-5-2013',
               '8-21-2013',
               '9-15-2013',
               '11-28-2013',
               '12-22-2013')
cutpoints<- c('1-1-2013',# star of range 'winter'
              '3-20-2013',# spring
              '6-21-2013',# summer
              '9-23-2013',# fall
              '12-21-2013',# winter
              '1-1-2014')# end of range

library(lubridate)
temp <- cut(mdy(someDates),
            mdy(cutpoints),
            labels=FALSE)
someSeasons  <-  c('winter',
                   'spring',
                   'summer',
                   'fall',
                   'winter')[temp]

Теперь используйте «someSeasons», чтобы сгруппировать данные по диапазонам дат с помощью вашего любимого статистического анализа. При выборе статистического анализа на ум приходит пуассоновская регрессия с поправкой на воздействие (т. е. продолжительность сезона), но это, вероятно, лучший вопрос для Cross Validated

Вы можете сделать вектор точек разреза с регулярными интервалами, например:

cutpoints<- c('3-20-2013',# spring
              '6-21-2013',# summer
              '9-23-2013',# fall
              '12-21-2013')# winter

temp <- cut(mdy(someDates),
            outer(mdy(cutpoints), years(1:5),`+`),
            labels=F)
someSeasons  <-  c('spring',
                   'summer',
                   'fall',
                   'winter')[(temp-1)%% 4 + 1] #the index is just a little tricky...
person Jthorpe    schedule 22.02.2015
comment
как бы я это сделал, если бы у меня было несколько лет? сработает ли пропуск года или нет? - person deeno; 22.02.2015
comment
См. правки с регулярной последовательностью и см. `?lubridate' для построения регулярной последовательности дат. - person Jthorpe; 22.02.2015
comment
Благодарю вас! это действительно помогло. - person deeno; 23.02.2015
comment
Я задал вопрос о том, как назначить сезон на дату. Вы видели предлагаемые решения? stackoverflow.com/ вопросы/9500114/ - person Roman Luštrik; 23.02.2015