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

Próxima revisão
Revisão anterior
cursos:mct:exemplo1a [2011/05/09 11:01]
paulojus criada
cursos:mct:exemplo1a [2011/05/27 00:42] (atual)
paulojus
Linha 71: Linha 71:
                           return(x)}))                           return(x)}))
 </​code>​ </​code>​
 +
 +Algumas operações ilustrando funções ''​*apply''​
 +<code R>
 +Tot.L <- function(x) sum(x[-1])
 +Pesq$Total <- apply(Pesq, 1, Tot.L)
 +Pesq
 +
 +## Eliminando a coluna
 +Pesq$Total <- NULL
 +Pesq
 +</​code>​
 +
 +Uma função para criar uma nova coluna que seria um indicador calculado com os dados
 +<code R>
 +## uma função simples
 +Indic <- function(x){
 + ​return((sum(x[c(2,​3,​4)])/​max(x[c(5,​6)])) - mean(x[c(7,​8)]))
 +}
 +
 +## uma versao mais elaborada
 +Indic <- function(x, na.rm=T, metodo){
 +  metodo <- match.arg(metodo,​ choice=c("​mean","​median"​))
 +  ## testando se os dados sao numéricos
 +   ​if(any(!is.numeric(x[-1]))){
 +     ​stop("​dados não numéricos"​)
 +  }
 +  ## mensagem de alerta
 +  if(any(is.na(x[-1])))
 +     ​warning("​dados incompletos"​)
 +  S1 <- sum(x[c(2,​3,​4)],​ na.rm=na.rm)
 +  S2 <- max(x[c(5,​6)],​ na.rm=na.rm)
 +  ## duas formas de fazer e escolha da funcao (if ou do.call)
 +  if(metodo == "​mean"​)
 +    S3 <- mean(x[c(7,​8)],​ na.rm=na.rm)
 +  if(metodo == "​median"​)
 +    S3 <- median(x[c(7,​8)],​ na.rm=na.rm)
 +#  do.call(metodo,​ x[c(7,8)], na.rm=na.rm)
 +  Ind <- (S1/S2) - S3
 +  return(Ind)
 +}
 +
 +apply(Pesq, 1, Indic)
 +apply(Pesq, 1, Indic, na.rm=F)
 +
 +apply(Pesq, 2, mean, na.rm=T)
 +</​code>​
 +
 +''​lapply()''​ e ''​sapply()''​ para listas e data-frames. A segunda simplifica o resultado da primeira se possível.
 +<​code>​
 +fc <- function(x) c(mean(x[-1]),​ median(x[-1]))
 +lapply(Pesq,​ fc)
 +sapply(Pesq,​ fc)
 +</​code>​
 +
  
 Agora lendo os indicadores de estudantes e depois unir tudo em um único objeto Agora lendo os indicadores de estudantes e depois unir tudo em um único objeto
Linha 92: Linha 146:
 rm(pcEst, pcPesq, Pesq1, Pesq, Est) rm(pcEst, pcPesq, Pesq1, Pesq, Est)
 </​code>​ </​code>​
 +
 +**Operações por grupos**\\ podem sere feitas com ''​tapply()'',​ ''​by()''​ ou ''​aggregate()''​
 +<code R>
 +with(ProdC, tapply(Autores,​ Ano, sum))
 +with(ProdC, by(Autores, Ano, sum))
 +aggregate(Autores ~ Ano, data=ProdC, sum)
 +</​code>​
 +
  
 **Alguns gráficos**\\ **Alguns gráficos**\\
Linha 102: Linha 164:
 <code R> <code R>
 ## produção total, somando pesquisadores e estudantes ## produção total, somando pesquisadores e estudantes
-aggregate(Autores ~ Ano, data=ProdC, sum) +AuporAno <- aggregate(Autores ~ Ano, data=ProdC, sum) 
-plot(aggregate(Autores ~ Ano, data=ProdC, sum)+AuporAno 
-plot(aggregate(Autores ~ Ano, data=ProdC, sum), type="​b",​ main="​Número total de autores"​)+plot(AuporAno
 +plot(AuporAno, type="​b",​ main="​Número total de autores"​)
  
 ## somando agora todas as produções de Perq e Estudantes por ano ## somando agora todas as produções de Perq e Estudantes por ano
Linha 136: Linha 199:
 <code R> <code R>
 require(lattice) require(lattice)
 +
 +# gráficos de dispersão
 +
 +xyplot(Autores~Ano,​ data=ProdC)
 +xyplot(Autores~Ano,​ groups=Autor,​ data=ProdC)
 +xyplot(Autores~Ano,​ groups=Autor,​ data=ProdC, auto.key=TRUE)
 +xyplot(Autores~Ano,​ groups=Autor,​ data=ProdC,
 +       ​auto.key=TRUE,​ type="​b"​)
 +xyplot(Autores~Ano,​ groups=Autor,​ data=ProdC,
 +       ​auto.key=TRUE,​ type=c("​p","​smooth"​))
 +
 +xyplot(Nacional+Internacional~Ano|Autor,​ data=ProdC)
 +xyplot(Nacional+Internacional~Ano|Autor,​ data=ProdC,
 +       ​auto.key=TRUE,​ type=c("​p","​smooth"​))
 +xyplot(Nacional+Internacional~Ano|Autor,​ data=ProdC,
 +       ​auto.key=TRUE,​ type=c("​p","​r"​))
 +xyplot(Nacional+Internacional~Ano|Autor,​ data=ProdC,
 +       ​auto.key=TRUE,​ type=c("​p","​r","​g"​))
 +
 +#​------------------------------------------------------------------------------------------
 +# gráficos de barras
 +
 +str(ProdC)
 +barchart(Autores~Ano,​ groups=Autor,​ data=ProdC, horizontal=FALSE)
 +barchart(Nacional+Internacional~Ano|Autor,​ data=ProdC, horizontal=FALSE)
 +
 +require(reshape)
 +ProdC2 <- melt(ProdC, id=c("​Ano","​Autor"​))
 +str(ProdC2)
 +
 +barchart(value~Ano|variable,​ groups=Autor,​ data=ProdC2,​ horizontal=FALSE)
 +barchart(value~Ano|variable,​ groups=Autor,​ data=ProdC2,​
 +         ​horizontal=FALSE,​ scales="​free"​)
 +barchart(value~Ano|variable,​ groups=Autor,​ data=ProdC2,​
 +         ​horizontal=FALSE,​ scales=list(x="​same",​ y="​free"​))
 +barchart(value~Autor|Ano,​ groups=variable,​ data=ProdC2,​ horizontal=FALSE)
 +barchart(value~Autor|factor(Ano),​ groups=variable,​ data=ProdC2,​ horizontal=FALSE)
 +barchart(value~Autor|factor(Ano),​ groups=variable,​ data=ProdC2,​
 +         ​horizontal=FALSE,​ auto.key=TRUE)
 +barchart(value~Autor|factor(Ano),​ groups=variable,​ data=ProdC2,​
 +         ​horizontal=FALSE,​ auto.key=list(space="​right"​))
 +barchart(value~Autor|factor(Ano),​ groups=variable,​ data=ProdC2,​
 +         ​horizontal=FALSE,​ auto.key=list(columns=4))
 </​code>​ </​code>​
  
Linha 144: Linha 250:
 </​code>​ </​code>​
  
-## Outro exemplo.... +Outro exemplo: (novos elementos: dados faltantes, caracteres de decimais e milhares)\\ 
-## Dados socio economicos ​--> 9.1+Dados sócio econômicos ​--> ​Tabela ​9.1 
 +<code R>
 ScEc <- read.table("​clipboard",​ dec=",",​ sep="​\t",​ na.strings="​\\u2026 ") ScEc <- read.table("​clipboard",​ dec=",",​ sep="​\t",​ na.strings="​\\u2026 ")
 head(ScEc) head(ScEc)
  
 ScEc <- as.data.frame(lapply(pcPesq,​ ptMil)) ScEc <- as.data.frame(lapply(pcPesq,​ ptMil))
- 
- 
 </​code>​ </​code>​
  
  

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