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