Использование функции 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
в идеале это была бы функция, которую я мог бы применять для нескольких анализов, не обязательно с одинаковыми датами начала и окончания в году
Ответы
Ответ 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". (Для объектов "Дата" используются только интервальные спецификации с использованием "дня", "неделя", "месяц", "квартал" и "год" разрешены.)