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
cursos:mct:exemplo1a [2011/05/09 13:14]
paulojus
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>​
  

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