Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
cursos:mct:exemplo5 [2011/05/09 10:58] paulojuscursos:mct:exemplo5 [2011/05/27 19:00] (atual) paulojus
Linha 1: Linha 1:
 ====== Miscelânia de tópicos ====== ====== Miscelânia de tópicos ======
 +
 +<fs medium>Ordenação</fs>
 +<code R>
 +x <- rpois(10, lam=10)
 +x
 +sort(x)
 +order(x)
 +x[order(x)]
 +x[rev(order(x))]
 +args(order)
 +order(x, decreasing=T)
 +</code>
  
  
-<fs medium>Lendo dados de teclado da área de transferência</fs>+<fs medium>Representação Manipulação de datas</fs>
 <code R> <code R>
-## digitar dados com <ENTER> após cada registroDigitar um <ENTER> mais para encerrar. +## transformando caracteres em datas 
-s1 <- scan()+dt1 <- as.Date("4/02/2011 03:24:13", "%d/%m/%Y %H:%M:%S"
 +dt1 
 +## exibindo data de otras formas 
 +format(dt1, "%j"   # dia do ano 
 +format(dt1, "%A"   # dia da semana 
 +format(dt1, "%c"   # referencia completa (de acordo com o locale do sistema) 
 +format(dt1, "%m"   # número do mes
  
-## recortar (CTRL-C) os seguintes +## opcoes disponíveis para exibição: 
-12  13  14   +# a A b B c d H I j m M p S U w W x X y Y z Z
-21  21  14   +
-12  31  25 +
-15  32  29+
  
-## lendo como vetor... +Sys.time() 
-s1 <- scan("clipboard"+format(as.Date(Sys.time()"%d/%m/%Y %H:%M:%S")"%j")
-## .. e transformando para matriz +
-## le por linhas, portanto para montar matriz de ser por linha  +
-matrix(s1nc=3byrow=T)+
  
-## agora lendo diretamente como data-frame +## as datas podem ser fornecidas de outras maneiras... 
-d1 <- read.table("clipboard") +x <c("25set1967", "28set1969", "30jan2003", "05jul2004") 
-d1+<- strptime(x, "%d%b%Y") 
 +z
  
-## mais opcoes +## 
-## recortar (CTRL-C) os seguintes +## Ver detalhes aqui!!!  
-X;      Y;   Z;    S +## 
-12,3;  13;  14,2;  A +## e note a confusão com a omisão do século !!! 
-21,2;  21;  14,0;  A +x <- c("1jan90""2jan90""31mar90", "30jul90") 
-12,1;  31;  25,1;  B +z <- strptime(x"%d%b%y") 
-15,1;  32;  29,9;  B+
 +x <- c("25set67""28set69""30jan03", "05jul04") 
 +z <- strptime(x"%d%b%y"
 +z
  
-d2 <- read.table("clipboard", sep=";", dec=",", header=T+## concatenando datas e horarios para formar registros únicos 
-d2 +dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92"
-</code>+times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26") 
 +<- paste(dates, times) 
 +strptime(x, "%m/%d/%y %H:%M:%S")
  
-<fs medium>Exemplo lendo tabelas da página do MCT/Indicadores</fs>+dt2 <- strptime(x, "%m/%d/%y %H:%M:%S"
 +format(dt2, "%c")
  
-Acessar tabelas na web por www.mct.gov.br/indicadores+dt2 <- sort(dt2) 
 +dt2
  
-Tabela de Produçãoo científica, tabela 5.1 (pesquisadores) +diff(dt2)
-<code R> +
-## Marcar/CTRL-C a tabela de indicadores de pesquisadores +
-pcPesq <- read.table("clipboard", sep="\t", dec=","+
-head(pcPesq)+
  
-## uma um pouco melhor usando mais argumentos +## frações de segundos 
-pcPesq <- read.table("clipboard", sep="\t", dec=",", strip.white=T, as.is=T+<- strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS") 
-head(pcPesq+z  
- +op <- options(digits.secs=3
-str(pcPesq)+z
 </code> </code>
  
-Note que todas as colunas, exceto a primeira, foram lidas como caracteres!+<fs medium>Precisão numérica/ponto flutuante</fs>
  
-Note que a tabela usa o caracter "." para separar milhares.\\ +Encontrando dados replicados, e não replicados 
-Entretanto o usa "." como caracter de separação decimal+<code R
 +x <- rpois(25, lam=5) 
 +
 +unique(x)
  
-Duas possíveis formas para contornar e ajustar os dados neste contexto: +duplicated(x) 
-  - Item de lista ordenada converter para números e multiplicar por mil<code R> +x[!duplicated(x)] 
-pcPesq$V2 +x[duplicated(x)
-as.numeric(pcPesq$V2+</code>
-as.numeric(pcPesq$V2)*1000+
  
-## agora automatizando para fazer em todas as colunas necessárias +Representação de números e ponto flutuante.\\ 
-Pesq <- as.data.frame(lapply(pcPesq, function(x){if(is.character(x)) x <- as.numeric(x)*1000; return(x)})) +''isTRUE'' deve se usado para testar condições dentro de funções.
-Pesq</code> +
-  - Eliminando o caracter "." (por substituição de caracteres.+
 <code R> <code R>
-Pesq1 <- as.data.frame(lapply(pcPesqfunction(x) +.1 == .3/3 
-                   if(!is.numeric(x) & !is.integer(x)) x <- as.numeric(gsub("\\.""", x)) +all.equal(.1.3/3
-                          return(x)}))+isTRUE(all.equal(0.1, .3/3)) 
 +identical(.1.3/3)
 </code> </code>
  
-Agora lendo os indicadores de estudantes e depois unir tudo em um único objeto+Mais coisas que deveriam ser iguais... mas não exatamente são ...
 <code R> <code R>
-pcEst <- read.table("clipboard"sep="\t"dec=",", strip.white=T, as.is=T) +seq(01by=0.1) == 0.3
-head(pcEst)+
  
-Est <- as.data.frame(lapply(pcEstfunction(x){if(is.character(x)) x <as.numeric(x)*1000; return(x)})+<- c(.3, 0.4 - 0.10.0.2, 0.6 - 0.3, 0.7 - 0.4) 
-Est+
 +unique(x) 
 +</code>
  
-Pesq$Autor <- "Pesquisador" +Um exemplo com uma função para resolver equação do 2o grau: 
-Est$Autor <- "Estudante"+<code R> 
 +eq2g <- function(a, b, c){ 
 + delta <- b^2 - 4 * a * c 
 + if(is.complex(delta) || all(delta > 0)) 
 +    delta <- sqrt(delta) 
 + else 
 +    delta <- sqrt(as.complex(delta)) 
 + return(cbind(-b + c(-1,1) * delta)/(2*a)) 
 +}
  
-ProdC <- rbind(PesqEst) +print(eq2g(1, -5, 6)dig=16)
-ProdC+
  
-head(ProdC) +eq2g(1, c(-51), 6)
-names(ProdC) <c("Ano","Autores","Nacional","Internacional","Anais", "Livros", "Capítulos", "Outras", "Autor") +
-head(ProdC) +
-## sempre bom remover o que não é mais necessário... +
-rm(pcEst, pcPesq, Pesq1, PesqEst) +
-</code>+
  
-**Alguns gráficos**\\ +eq2g(1, -5, 6) - c(2, 3)
-Vamos ilustrar o uso de três (3dispositivos gráficos do R: +
-  Gráficos básicos do sistema (pacote ''graphics''/default) +
-  - Gráficos da biblioteca ''lattice'' +
-  - Gráficos da biblioteca ''ggplot''+
  
-I. gráficos com ''graphics'' (padrões do sistema) +eq2g(1/3-5/36/3)
-<code R> +
-## produção totalsomando pesquisadores e estudantes +
-aggregate(Autores ~ Ano, data=ProdC, sum) +
-plot(aggregate(Autores ~ Ano, data=ProdC, sum)) +
-plot(aggregate(Autores ~ Ano, data=ProdC, sum), type="b"main="Número total de autores")+
  
-## somando agora todas as produções de Perq e Estudantes por ano +print(eq2g(1/3, -5/36/3), dig=16)
-Totais <- aggregate(. ~ Ano, data=ProdC[,-9]sum) +
-matplot(Totais[,1], Totais[,-1]type="l")+
  
-names(Totais)+eq2g(1/3, -5/3, 6/3- c(2, 3) 
 +</code>
  
-matplot(Totais[,1], Totais[,-1], type="l", col=c(1, 2, 2, 3, 4, 4, 5), lty=c(1,1,2,1,1,2,5), 
- xlab="Ano", ylab="Quantidade", main="Produção Científica") 
-legend("topleft", names(Totais)[-1], col=c(1, 2, 2, 3, 4, 4, 5), lty=c(1,1,2,1,1,2,5)) 
  
-## agora separando entre Pesquisadores Estudantes +<fs medium>Objetos crescentes, substituição der valores criação direta de vetores</fs>
-## gráficos podem ser feitos de várias formas, aqui alguns exemplos +
-with(ProdC, plot(Autores ~ Ano, type="n")) +
-with(ProdC, text(Ano, Autores, substr(Autor, 1, 1))+
  
-with(ProdC, coplot(Autores ~ Ano|Autor, type="b")) +Os tempos de execução podem ser substancialmetne diferentes!! 
-with(ProdC, coplot(Autores ~ Ano|Autor, type="b", show.given=F))+<code R> 
 +n<- 50000
  
-with(subset(ProdC, Autor=="Pesquisador"), plot(Autores ~ Ano, type="b")+system.time(
-with(subset(ProdC, Autor=="Estudante"), lines(Autores ~ Anotype="b", col=2))+vec <- numeric(0
 +for(i in 1:nvec <- c(veci) 
 +})
  
-AU <- reshape(ProdC[,c(1,2,9)], idvar="Ano", v.name="Autores", timevar="Autor", direction="wide"+system.time({ 
-matplot(AU[,1], AU[,-1], type="l", col=c(2,4), lty=1, main="Evolução do número de autores",  +vec <- numeric(n) 
-        xlab="Ano", ylab="Número de Autores") +for(i in 1:nvec[i<i 
-legend("topleft", c("Pesquisadores","Estudandes"), col=c(2,4), lty=1) +})
-</code> +
  
-IIGráficos da biblioteca lattice +system.time({ 
-<code R> +vec <- 1:n 
-require(lattice)+})
 </code> </code>
  
-III. Gráficos da biblioteca ggplot+Onderm de operações
 <code R> <code R>
-install.packages("ggplot2"dep=T## contributed package" - é necessário instalar! +x <- rnorm(10000m=100, sd=10)
-require(ggplot2) +
-</code>+
  
-## Outro exemplo.... +system.time({ 
-## Dados socio economicos --> 9.1 + lsum <- 0 
-ScEc <- read.table("clipboard", dec=",", sep="\t", na.strings="\\u2026 ") + for(i in 1:length(x)){ 
-head(ScEc+   lsum <- lsum + log(x[i]) 
- +  } 
-ScEc <- as.data.frame(lapply(pcPesq, ptMil))+ })
  
 +system.time(lsum <- sum(log(x)))
  
 +c(log(12.3), log(16.7), log(18.3))
 +log(c(12.3, 16.7, 18.3))
 </code> </code>
- 
- 

QR Code
QR Code cursos:mct:exemplo5 (generated for current page)