<div>Olá Hugo, segue abaixo a rotina para seu problema:</div>
<div> </div>
<div><strong># Seus dados "data_semana.txt":</strong></div>
<div> </div>
<div>DATA QTD<br />05/11/2003 1<br />11/11/2003 1<br />11/11/2003 1<br />11/11/2003 1<br />11/11/2003 1<br />11/11/2003 1<br />11/11/2003 1<br />20/11/2003 1<br />26/11/2003 1<br />27/11/2003 1</div>
<div> </div>
<div>DF <- read.table("data_semana.txt",h=T)<br />attach(DF)<br /><br />DF$DATA <- as.Date(DF$DATA, "%d/%m/%Y")<br /><br />fmt <- function(x) <br /> {<br /> weeks <- function(x) as.numeric(x + 4) %/% 7 + 1<br /> sprintf("%s %02d", format(x, "%d/%m/%Y"), weeks(x) - weeks(x[1]) + 1)<br /> }<br /><br />library(zoo)<br />Resultado <- data.frame(aggregate(zoo(DF$QTD),fmt(DF$DATA),sum))<br />colnames(Resultado) <- c("QTD")<br /><br />ndt <- nrow(Resultado) # número de datas<br />Semana <- rep(0,ndt)<br />Dia <- rep(0,ndt)<br />Mes <- rep(0,ndt)<br />Ano <- rep(0,ndt)<br />Qtd <- rep(0,ndt)<br /><br />for (i in 1:ndt)<br />{<br /> df <- rownames(Resultado)[i]<br /> sep0 <- unlist(strsplit(df, " "))[1] <br /> Dia[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[1]<br /> Mes[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[2]<br /> Ano[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[3]<br /> Qtd[[i]] <- Resultado
[[1]][i]<br /> Semana[i] <- Mes[i]*4+i<br />}<br /><br />cbind(Semana,Dia,Mes,Ano,Qtd)<br /><br /></div>
<div><strong># Saída:</strong></div>
<div> </div>
<div> Semana Dia Mes Ano Qtd<br />[1,] 45 5 11 2003 1<br />[2,] 46 11 11 2003 6<br />[3,] 47 20 11 2003 1<br />[4,] 48 26 11 2003 1<br />[5,] 49 27 11 2003 1<br /><br /></div>
<div>Espero ter contribuído!</div>
<div> </div>
<div>Acredito que os colegas aqui, podem melhorar esse script!</div>
<div> </div>
<div><em>Att.</em></div>
<div><em>André Barbosa Ventura da Silva</em></div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<hr style="border-top: 1px solid #ccc;" />
<div>Em 18/08/2012 14:53, <strong>Leandro Marino < leandromarino@leandromarino.com.br ></strong> escreveu:<br /><span style="color: #333333;"><span><span style="font-family: trebuchet ms,sans-serif;"><em>agreggate(df$QTD,by=list(SEMANA=df$SEMANA,DATA=df$DATA,sum)</em></span></span></span></div>
<div><span style="color: #333333; font-family: trebuchet ms,sans-serif;"><em> </em></span></div>
<div><span style="color: #333333; font-family: trebuchet ms,sans-serif;"><em> </em></span></div>
<div><span style="color: #333333; font-family: trebuchet ms,sans-serif;"><em><br /></em></span>
<div><br />
<div class="gmail_quote">Em 18 de agosto de 2012 14:32, Hugo Sena <span dir="ltr"><<a href="../../../undefined//compose?to=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 class="im">Boas.<br />Obrigado pela dica, penso que a função aggregate() resolve mas não consigo utilizar.<br /><br /></div>
Tenho um ficheiro CSV e o que pretendo é em cada linha somar as vendas totais por SEMANA.<br /><br />Tenho os dados seguintes mas apenas com as colunas DATA e QTD:<br />
<table width="201" border="0" cellspacing="0" cellpadding="0"><colgroup><col style="width: 48pt;" width="64" /> <col style="width: 55pt;" width="73" /> <col style="width: 48pt;" width="64" /> </colgroup>
<tbody>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; width: 48pt; text-align: center;" width="64" height="20"><strong>SEMANA</strong></td>
<td style="width: 55pt; text-align: center;" width="73"><strong>DATA</strong></td>
<td style="width: 48pt; text-align: center;" width="64"><strong>QTD</strong></td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">45</td>
<td align="right">05-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">47</td>
<td align="right">20-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">48</td>
<td align="right">26-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">48</td>
<td align="right">27-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
</tbody>
</table>
<br /><br />E o que pretendo é somar as quantidades em cada dia de forma a ficar igualmente com as colunas DATA e QTD: <br />
<table width="201" border="0" cellspacing="0" cellpadding="0"><colgroup><col style="width: 48pt;" width="64" /> <col style="width: 55pt;" width="73" /> <col style="width: 48pt;" width="64" /> </colgroup>
<tbody>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; width: 48pt; text-align: center;" width="64" height="20"><strong>SEMANA</strong></td>
<td style="width: 55pt; text-align: center;" width="73"><strong>DATA</strong></td>
<td style="width: 48pt; text-align: center;" width="64"><strong>QTD</strong></td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">45</td>
<td align="right">05-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">46</td>
<td align="right">11-11-2003</td>
<td style="text-align: center;">6</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">47</td>
<td align="right">20-11-2003</td>
<td style="text-align: center;">1</td>
</tr>
<tr style="min-height: 15.0pt;">
<td style="min-height: 15pt; text-align: center;" height="20">48</td>
<td align="right">26-11-2003</td>
<td style="text-align: center;">2</td>
</tr>
</tbody>
</table>
<br /><br />Acrescentei a coluna SEMANA apenas para o exemplo porque é o que pretendo ter em consideração, até porque se não der para fazer de forma automática terei de fazer isto manualmente e somar para as mais de 5 000 linhas...
<div class="HOEnZb">
<div class="h5"><br /> <br />Podem dar uma ajuda? E depois é suposto exportar esta agregação para um ficheiro? Como? Já procurei no google mas ainda não consegui fazer no meu caso em particular.<br /><br />Obrigado.<br />Cumps.</div>
</div>
<br />_______________________________________________<br /> R-br mailing list<br /> <a href="../../../undefined//compose?to=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.</blockquote>
</div>
</div>
</div>
<div> </div>