### --------------------------------------------------------- ### Aula dia 12 de dezembro de 2011 - CE083 ### Operacoes com datas ### Profs. Elias e Walmes ### http://www.leg.ufpr.br/doku.php/disciplinas:ce083-2011-02 ### --------------------------------------------------------- ### uma string a <- '13/12/2011' ### converte para data b <- as.Date(a, format="%d/%m/%Y") b str(b) ### agora isso eh um 'numero' b + 1:10 b + -3:3 ### mas nem todas as operacoes estao definidas b*2 ### formatacao help(format.Date, help_type="html") help(as.Date, help_type="html") help(format.POSIXct, help_type="html") format(b+1:10, format='%d de %B') format(b+1:10, format='%d de %b de %Y') format(b+1:10, format='%d de %B de %Y') format(b+1:10, format='%A %d de %B do ano de %Y') ### um vetor de datas de ### http://pt.wikipedia.org/wiki/Eclipse_lunar ecl <- read.delim('clipboard', fileEncoding='latin1') ecl[,1] x <- as.Date(as.character(ecl[,1]), format='%d de %B de %Y') x diff(x) ### formato ISO (International Organization for Standardization) ### unidade de medida e' segundos ISOdate(2011, 12, 13) ### time zone local ISOdate(2011, 12, 13, tz="") ### que horas e' agora (h0 <- Sys.time()) h0+1:10 ### sequencias ### de hora em hora seq(ISOdate(2011, 12, 12), ISOdate(2011, 12, 13), 60*60) ### de dia em dia seq(ISOdate(2011, 12, 1), ISOdate(2011, 12, 10), 60*60*24) ### de minuto em minuto seq(ISOdate(2011,12,13,20,30), ISOdate(2011,12,13,20,31), 1) ISOdate(2011,12,13,20,30) + 0:60 ### sumario de datas s1 <- sample(seq(ISOdate(2011, 1, 1), ISOdate(2011, 12, 31), 60*60*24), 30) str(s1) summary(s1) ### numero dias a partir de 2000-01-01 13:30:03 Sys.time() - ISOdate(2000, 1, 1, 13, 30, 03) ### em horas difftime(Sys.time(), ISOdate(2000, 1, 1, 13, 30, 03), un='h') ### em min difftime(Sys.time(), ISOdate(2000, 1, 1, 13, 30, 03), un='m') ### do primeiro dia deste ano Sys.time() - ISOdate(2011, 1, 1) ## importando um arquivo com datas dac <- read.table("http://www.leg.ufpr.br/~walmes/ensino/ce223-2011-01/dac.txt") str(dac) dac <- dac$V1 #------------------------------------------------------------------------------------ # conversao para datas dac <- as.POSIXlt(dac, origin="1970-01-01") dac <- sort(dac) str(dac) hac <- as.POSIXct(format(dac, "%H:%M:%S"), format="%H:%M:%S") str(hac) plot(dac, hac, type="l", ylab="Hora do acesso", xlab="Data do acesso", xaxt="n") axis.POSIXct(1, at=seq(as.POSIXct("2010-10-01"), as.POSIXct("2011-06-15"), by="month"), format="%B", col=2) axis.POSIXct(3, at=seq(min(dac), max(dac), by="week"), format="%d/%m") axis.POSIXct(1, at=seq(as.POSIXct("2010-10-01"), as.POSIXct("2011-06-15"), by="3 days"), format="%d", col=2, labels=FALSE, tcl=-0.2) axis.POSIXct(2, at=seq(as.POSIXct("03:00:00", format="%H:%M:%S"), as.POSIXct("21:00:00", format="%H:%M:%S"), by="hour"), format="%H", labels=FALSE, tcl=-0.2) #------------------------------------------------------------------------------------------ # obtendo resultados diarios, semanais, mensais, etc td <- tapply(dac, as.Date(dac), length) barplot(td) plot(as.Date(names(td)), td, type="b") abline(h=mean(td)) dd <- tapply(dac, as.Date(dac), function(x) as.numeric(diff(range(x)), units="hours")) str(dd) barplot(dd) plot(as.Date(names(dd)), dd, type="b") abline(h=mean(dd)) ### analise de dados de tempos numa competicao ### http://www.20kmparis.com/web/resultats_precedents.asp require(gdata) dad <- read.xls("http://leg.ufpr.br/~elias/ensino/ce083/Resultats20kmParis2011.xls", fileEncoding='latin1', encoding='latin1') str(dad) head(dad[,1:7]) t1 <- as.POSIXlt(as.character(dad$Tps5Km), format="%H:%M:%S") head(t1) summary(t1) t0 <- ISOdate(2011,12,13,0,0,0, tz='') d1 <- difftime(t1,t0, unit='min') head(d1) hist(as.numeric(d1)) t2 <- as.POSIXlt(as.character(dad$Tps10Km), format="%H:%M:%S") d2 <- difftime(t2, t1, unit='min') str(d2) summary(as.numeric(d2)) table(is.na(d2)) hist(as.numeric(d2)) plot(t1, t2, asp=1) abline(c(0,1)) reg <- lm(y ~ x, data=data.frame(x=as.numeric(t1), y=as.numeric(t2))) summary(reg) abline(reg, col=2) str(dad$cat) pie(table(dad$cat)) ##install.packages("iplots", dep=TRUE) ##require(iplots) require(lattice) xyplot(y~x|cat, data=data.frame(x=t1, y=t2, cat=dad$cat))