Essa é uma revisão anterior do documento!
Entrada de dados e gráficos
Lendo dados de teclado e da área de transferência
## digitar dados com <ENTER> após cada registro. Digitar um <ENTER> a mais para encerrar.
s1 <- scan()
## recortar (CTRL-C) os seguintes
12 13 14
21 21 14
12 31 25
15 32 29
## lendo como vetor...
s1 <- scan("clipboard")
## .. e transformando para matriz
## le por linhas, portanto para montar matriz de ser por linha
matrix(s1, nc=3, byrow=T)
## agora lendo diretamente como data-frame
d1 <- read.table("clipboard")
d1
## mais opcoes
## recortar (CTRL-C) os seguintes
X; Y; Z; S
12,3; 13; 14,2; A
21,2; 21; 14,0; A
12,1; 31; 25,1; B
15,1; 32; 29,9; B
d2 <- read.table("clipboard", sep=";", dec=",", header=T)
d2
Exemplo lendo tabelas da página do MCT/Indicadores
Acessar tabelas na web por www.mct.gov.br/indicadores
Tabela de Produçãoo científica, tabela 5.1 (pesquisadores)
## 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
pcPesq <- read.table("clipboard", sep="\t", dec=",", strip.white=T, as.is=T)
head(pcPesq)
str(pcPesq)
Note que todas as colunas, exceto a primeira, foram lidas como caracteres!
Note que a tabela usa o caracter "." para separar milhares.
Entretanto o R usa "." como caracter de separação decimal
Duas possíveis formas para contornar e ajustar os dados neste contexto:
- Item de lista ordenada converter para números e multiplicar por mil
pcPesq$V2 as.numeric(pcPesq$V2) as.numeric(pcPesq$V2)*1000 ## agora automatizando para fazer em todas as colunas necessárias Pesq <- as.data.frame(lapply(pcPesq, function(x){if(is.character(x)) x <- as.numeric(x)*1000; return(x)})) Pesq - Eliminando o caracter "." (por substituição de caracteres.
Pesq1 <- as.data.frame(lapply(pcPesq, function(x){
if(!is.numeric(x) & !is.integer(x)) x <- as.numeric(gsub("\\.", "", x))
return(x)}))
Agora lendo os indicadores de estudantes e depois unir tudo em um único objeto
pcEst <- read.table("clipboard", sep="\t", dec=",", strip.white=T, as.is=T)
head(pcEst)
Est <- as.data.frame(lapply(pcEst, function(x){if(is.character(x)) x <- as.numeric(x)*1000; return(x)}))
Est
Pesq$Autor <- "Pesquisador"
Est$Autor <- "Estudante"
ProdC <- rbind(Pesq, Est)
ProdC
head(ProdC)
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, Pesq, Est)
Alguns gráficos
Vamos ilustrar o uso de três (3) dispositivos 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)
## produção total, somando 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
Totais <- aggregate(. ~ Ano, data=ProdC[,-9], sum)
matplot(Totais[,1], Totais[,-1], type="l")
names(Totais)
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 e Estudantes
## 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"))
with(ProdC, coplot(Autores ~ Ano|Autor, type="b", show.given=F))
with(subset(ProdC, Autor=="Pesquisador"), plot(Autores ~ Ano, type="b"))
with(subset(ProdC, Autor=="Estudante"), lines(Autores ~ Ano, type="b", col=2))
AU <- reshape(ProdC[,c(1,2,9)], idvar="Ano", v.name="Autores", timevar="Autor", direction="wide")
matplot(AU[,1], AU[,-1], type="l", col=c(2,4), lty=1, main="Evolução do número de autores",
xlab="Ano", ylab="Número de Autores")
legend("topleft", c("Pesquisadores","Estudandes"), col=c(2,4), lty=1)
II. Gráficos da biblioteca lattice
require(lattice)
III. Gráficos da biblioteca ggplot
install.packages("ggplot2", dep=T) ## contributed package" - é necessário instalar!
require(ggplot2)
## Outro exemplo…. ## Dados socio economicos –> 9.1 ScEc ← read.table("clipboard", dec=",", sep="\t", na.strings="\\u2026 ") head(ScEc)
ScEc ← as.data.frame(lapply(pcPesq, ptMil))
</code>