Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

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 anterior Revisão anterior
Próxima revisão
Revisão anterior
cursos:mct:exemplo5 [2011/05/09 10:58]
paulojus
cursos: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)