[R-br] Extrair Período de datas

Cesar Rabak cesar.rabak em gmail.com
Segunda Janeiro 23 17:40:40 BRST 2017


Salah,

Suspeito que o uso da função month seja insuficiente para o Amiko (OP),
posto que ele não especifica a faixa de anos que o banco de dados dele
abarca, e por outro lado as datas do Carnaval são "feriados móveis".

Ademais, como ele fala em "período de Carnaval", cuja definição é bastante
frouxa (alguns contam a partir do "grito de carnaval" (sábado) outros
contam apenas a segunda que antecede a terça de Carnaval, etc.

Com isso ele teria que gerar uma tabela com todos os Carnavais do período
compreendido entre a mínima e máxima data do banco de dados dele, e depois
usar subset. Para *um* período, um exemplo pronto (admitindo que o costume
desta lista não é violado ao postar exemplos do SO):
http://stackoverflow.com/questions/22420487/subsetting-data-table-set-by-date-range-in-r

Para achar os períodos de Carnaval para os vários anos eu recomendo uma
leitura do manual do pacote timeDate, que permite encontrar as datas móveis
(dica para os pesquisadores de Google para este caso: procurem pesquisar,
se em inglês, por « Ash Wednesday » em vez de "Carnival", porque este
último coincide com trocentos outros assuntos enquanto a quarta-feira de
cinzas é menos ruidosa para pesquisa).

HTH
--
Cesar Rabak


On Mon, Jan 23, 2017 at 3:19 PM, salah via R-br <r-br em listas.c3sl.ufpr.br>
wrote:

> Olá
>
> Uma das alternativas é usar a função <month> da biblioteca {data.table}
>
> exemplo adaptado do site:
>
> http://stackoverflow.com/questions/17244077/select-subset-
> by-date-in-r#17246437
>
> library(data.table)
>
> ## dados
> n.child = as.numeric(c(1,2,3,4,5,6))
> sex = as.factor(c("f","f","f","m","m","f"))
> date = as.Date(c("01/01/2002", "01/12/2002", "13/02/2003", "17/02/2003",
> "03/01/2004", "09/09/2004"), format="%d/%m/%Y")
> DF = data.frame(n.child, sex, date)
>
> ## ----- dataframe -----
> fev = DF[month(DF$date) == 2,]
> fev
>
> ## ----- data.table -----
> ## converte para "data.table"
> DT = data.table(DF)
>
> ## seleciona mes fevereiro, mes 2
> fev = DT[month(date) == 2]
> fev
>
> ## converte para dataframe
> setDF(fev)
> fev
>
> o data.table é muito mais eficiente para manipulação de uma base de dados
>
> saudações
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo
> mnimo reproduzvel.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170123/78a99b36/attachment.html>


Mais detalhes sobre a lista de discussão R-br