Подтвердить что ты не робот

Использование функции R cut в датах

У меня есть информационный кадр, показывающий участие в спортивных мероприятиях

Crowd    matchDate
2345      1993-01-26
4567      1993-08-01
8888      1994-03-02
1298      1994-11-07
9876      1995-09-01 etc

1237      2011-09-09

Стойка match - это класс POSIXct

Я хочу создать сезонный фактор, основанный на дате, когда каждый сезон проходит, скажем, с 1 августа по 31 июля, например, фактор 1992/3 будет включать даты 1992-08-01 - 1993-07-31

в идеале это была бы функция, которую я мог бы применять для нескольких анализов, не обязательно с одинаковыми датами начала и окончания в году

4b9b3361

Ответ 1

Если ваш вопрос больше связан с тем, как вы автоматически генерируете перерывы и метки, возможно, это поможет

DF <- data.frame(matchDate = as.POSIXct(as.Date(sample(5000,100,replace=TRUE), origin="1993-01-01")))

years <- 1992:2011
DF$season <- cut(DF$matchDate, 
  breaks=as.POSIXct(paste(years,"-08-01",sep="")),
  labels=paste(years[-length(years)],years[-length(years)]+1,sep="/"))

Ответ 2

Пример моего комментария.

x <- as.Date(1:1000, origin = "2000-01-01")
x <- cut(x, breaks = "quarter") 

А потом перепишите, пожалуйста, в случае необходимости.

labs <- paste(substr(levels(x),1,4), "/", 1:4, sep="")
x <- factor(x, labels = labs)

?cut.POSIXct

разрывы
вектор точек разреза или числа, задающих количество интервалов, которые нужно нарезать x, или спецификацию интервала, один "секунды", "мин", "час", "день", "день DSTday", "неделя", "месяц", "квартал", или "год", необязательно предшествующий целому числу и пробелу, или следующему по "s". (Для объектов "Дата" используются только интервальные спецификации с использованием "дня", "неделя", "месяц", "квартал" и "год" разрешены.)