Olá Hugo, segue abaixo a rotina para seu problema:
 
# Seus dados "data_semana.txt":
 
DATA    QTD
05/11/2003    1
11/11/2003    1
11/11/2003    1
11/11/2003    1
11/11/2003    1
11/11/2003    1
11/11/2003    1
20/11/2003    1
26/11/2003    1
27/11/2003    1
 
DF <- read.table("data_semana.txt",h=T)
attach(DF)

DF$DATA <- as.Date(DF$DATA, "%d/%m/%Y")

fmt <- function(x)
 {
  weeks <- function(x) as.numeric(x + 4) %/% 7 + 1
  sprintf("%s %02d", format(x, "%d/%m/%Y"), weeks(x) - weeks(x[1]) + 1)
 }

library(zoo)
Resultado <- data.frame(aggregate(zoo(DF$QTD),fmt(DF$DATA),sum))
colnames(Resultado) <- c("QTD")

ndt <- nrow(Resultado) # número de datas
Semana <- rep(0,ndt)
Dia <- rep(0,ndt)
Mes <- rep(0,ndt)
Ano <- rep(0,ndt)
Qtd <- rep(0,ndt)

for (i in 1:ndt)
{
  df <- rownames(Resultado)[i]
  sep0 <- unlist(strsplit(df, " "))[1] 
  Dia[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[1]
  Mes[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[2]
  Ano[[i]] <- as.numeric(unlist(strsplit(sep0, "/")))[3]
  Qtd[[i]] <- Resultado [[1]][i]
  Semana[i] <- Mes[i]*4+i
}

cbind(Semana,Dia,Mes,Ano,Qtd)

# Saída:
 
     Semana Dia Mes  Ano Qtd
[1,]     45   5  11 2003   1
[2,]     46  11  11 2003   6
[3,]     47  20  11 2003   1
[4,]     48  26  11 2003   1
[5,]     49  27  11 2003   1

Espero ter contribuído!
 
Acredito que os colegas aqui, podem melhorar esse script!
 
Att.
André Barbosa Ventura da Silva
 
 
 
 

Em 18/08/2012 14:53, Leandro Marino < leandromarino@leandromarino.com.br > escreveu:
agreggate(df$QTD,by=list(SEMANA=df$SEMANA,DATA=df$DATA,sum)
 
 


Em 18 de agosto de 2012 14:32, Hugo Sena <hugosena@gmail.com> escreveu:
Boas.
Obrigado pela dica, penso que a função aggregate() resolve mas não consigo utilizar.

Tenho um ficheiro CSV e o que pretendo é em cada linha somar as vendas totais por SEMANA.

Tenho os dados seguintes  mas apenas com as colunas DATA e QTD:
SEMANA DATA QTD
45 05-11-2003 1
46 11-11-2003 1
46 11-11-2003 1
46 11-11-2003 1
46 11-11-2003 1
46 11-11-2003 1
46 11-11-2003 1
47 20-11-2003 1
48 26-11-2003 1
48 27-11-2003 1


E o que pretendo é somar as quantidades em cada dia de forma a ficar igualmente com as colunas DATA e QTD:
SEMANA DATA QTD
45 05-11-2003 1
46 11-11-2003 6
47 20-11-2003 1
48 26-11-2003 2


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...


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.

Obrigado.
Cumps.

_______________________________________________
R-br mailing list
R-br@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 forneça código mínimo reproduzível.