Использование функции R cut для дат - PullRequest
15 голосов
/ 06 сентября 2011

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

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

Matchdate - это класс POSIXct

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

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

Ответы [ 2 ]

12 голосов
/ 06 сентября 2011

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

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

брейки
вектор точек среза или число, дающее число интервалов, на которые должен быть нарезан х, или интервал, один «sec», «min», «hour», «day», «DSTday», «week», «month», «четверть» или «год», необязательно предшествующий целому числу и пробелу, или сопровождаемый на "с". (Только для объектов «Дата» указываются интервалы с использованием «дня», Разрешается указывать "неделя", "месяц", "квартал" и "год".)

10 голосов
/ 07 сентября 2011

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

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="/"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...