Fiz uma função mais geral:<br><br>define.semana = function(datas, formato='%d-%m-%Y'){<br> datas = as.Date(datas, formato)<br> minimo = min(datas)<br> resto = as.numeric(minimo)%%7<br> if(resto==4) domingo.zero = minimo - 1 else<br>
if(resto==5) domingo.zero = minimo - 2 else<br> if(resto==6) domingo.zero = minimo - 3 else<br> if(resto==0) domingo.zero = minimo - 4 else<br> if(resto==1) domingo.zero = minimo - 5 else<br> if(resto==2) domingo.zero = minimo - 6<br>
dom.alem = max(datas)+10<br> domingos = seq( domingo.zero, dom.alem, 7 )<br> as.numeric( cut( as.numeric(datas), breaks=domingos, right=F ) )<br>}<br>tt = read.csv2('tt.csv')<br>tt$semana = define.semana(tt$DATA)<br>
aggregate(tt$QTD, tt['semana'], sum)<br><br><br><div class="gmail_quote">Em 25 de agosto de 2012 23:33, Lucas Cusinato <span dir="ltr"><<a href="mailto:lucasbcr@gmail.com" target="_blank">lucasbcr@gmail.com</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote" size="2"><br>
Hugo,<br><br>Encontrei uma solução usando a cut(). Peguei uma lista enorme de domingos para usá-los como pontos de corte (breaks) na cut(). Pode não ser a forma mais eficiente, mas acho que é a mais simples até agora:</font><br>
<blockquote>tt = read.csv2('tt.csv')<br>tt$DATA = as.Date(tt$DATA, '%d-%m-%Y')<br><br>### defini o domingo que inicia a primeira semana:<br>primeiro.domingo = as.numeric( as.Date('2003-11-02') )<br>
<br>### e um além do necessário pra não ter problemas:<br>ultimo.domingo = as.numeric( as.Date('2012-08-26') )<br><br>### fiz uma sequência de todos os domingos nesse intervalo<br>domingos = seq( primeiro.domingo, ultimo.domingo, 7 )<br>
<br>### e a usei como breaks na função cut()<br>tt$semana = as.numeric( cut(as.numeric(tt$DATA), breaks = domingos, right=FALSE) )<br>## as.numeric() porque cut() só funciona com vetores numéricos<br>## right=F para que os domingos iniciem a semana, ou seja, criar classes do tipo: [dom, sáb)<br>
<br>### aí finalmente vem o aggregate:<br>aggregate(tt$QTD, tt['semana'], sum)<br><br># se tiver dúvida com relação ao as.numeric() em datas:<br>as.numeric( as.Date('1970-01-01') )<br>as.numeric( as.Date('1970-01-02') )<br>
as.numeric( as.Date('1970-01-03') )<br></blockquote>Não testei muito aqui, vê aí se funciona no resto dos dados mesmo.<br><br>Atenciosamente,<br>Lucas Cusinato<br><br><br><div class="gmail_quote">Em 25 de agosto de 2012 15:20, Leandro Marino <span dir="ltr"><<a href="mailto:leandromarino@leandromarino.com.br" target="_blank">leandromarino@leandromarino.com.br</a>></span> escreveu:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font color="#333333"><font><font face="trebuchet ms,sans-serif"><i>Este outro também pode ajudar</i></font></font></font><div>
<a href="http://stackoverflow.com/questions/6970588/r-optimal-extraction-of-weekday-week-month-from-dates-for-memory-compactne" target="_blank">http://stackoverflow.com/questions/6970588/r-optimal-extraction-of-weekday-week-month-from-dates-for-memory-compactne</a> </div>
<div><font><font><span style="font-family:'trebuchet ms',sans-serif;color:rgb(51,51,51)"><font color="#000000" face="arial"><br></font></span></font></font><br><div class="gmail_quote">Em 25 de agosto de 2012 15:19, Leandro Marino <span dir="ltr"><<a href="mailto:leandromarino@leandromarino.com.br" target="_blank">leandromarino@leandromarino.com.br</a>></span> escreveu:<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font color="#333333"><font><font face="trebuchet ms,sans-serif"><i>Hugo,</i></font></font></font><div><font color="#333333"><font><font face="trebuchet ms,sans-serif"><i><br>
</i></font></font></font></div><div><font color="#333333"><font><font face="trebuchet ms,sans-serif"><i>dê uma olhada neste topico...</i></font></font></font></div>
<div><font color="#333333"><font><font face="trebuchet ms,sans-serif"><i><br></i></font></font></font></div><div><a href="https://stat.ethz.ch/pipermail/r-help/2003-December/043610.html" target="_blank">https://stat.ethz.ch/pipermail/r-help/2003-December/043610.html</a> </div>
<div><font><font><span style="font-family:'trebuchet ms',sans-serif;color:rgb(51,51,51)"><font color="#000000" face="arial"><br></font></span></font></font></div><div><font><font><span style="font-family:'trebuchet ms',sans-serif;color:rgb(51,51,51)"><font color="#000000" face="arial"><br>
</font></span></font></font></div><div><font><font><span style="font-family:'trebuchet ms',sans-serif;color:rgb(51,51,51)"><font color="#000000" face="arial"><br></font></span></font></font><br><div class="gmail_quote">
Em 25 de agosto de 2012 15:15, Hugo Sena <span dir="ltr"><<a href="mailto:hugosena@gmail.com" target="_blank">hugosena@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>
@<a href="http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=373924" target="_blank">andrebvs</a><br><br>Muito obrigado pela ajuda. Quase, quase que resolve.<br><br>Isto rebenta quando:<br>
- Os dias 26 e 27 correspondem ambos à semana 48<br>
- Quando se colocam vários meses baralha-se todo<br><br>Para ver as semanas fui a este site: <a href="http://www.calendario-365.com.br/calend%C3%A1rio-2003.html" target="_blank">www.calendario-365.com.br/calend%C3%A1rio-2003.html</a><br>
<br>Alguma ajuda e obrigado a todos.<br><br>Cumps<br>
<br></div></div><div>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></div></blockquote></div><br></div>
</blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></div><br>
</blockquote></div><br>