Os principais objetivos deste post são:
Continuar a apresentação geral do R/ RStudio mostrada aqui
Apresentar uma noção geral de como processar comandos básicos no R/Rstudio;
Compartilhar alguns links com tutoriais e materiais relacionados ao uso do R;
Conforme vimos aqui, após instalar o R e o RStudio e abrir o RStudio teremos uma tela com quatro painéis. Vamos iniciar nossas primeiras linhas de comando digitando os códigos no Painel 1 a esquerda.
O símbolo # é utilizado para fazer comentário. No exemplo abaixo, armazenamos na variável x a soma 2+2 e em seguida digitamos a variável x para ver o resultado da soma que foi armazenado nela.
Para processar este código pode-se:
Clicar no botão Run na parte superior do painel do Script; ou
Selecionar as linhas de comando e usar o atalho no teclado utilizando as teclas Ctrl + Enter (Acho que este atalho pode mudar dependendo do sistema operacional).
O resultado da execução do código é mostrado no painel Console
A seguir, veremos alguns comandos básicos para os primeiros passos no R. Basta copiar os comandos e colá-los (ou digitá-los, se preferir. Eu, particularmente, quando faço tutoriais prefiro ir digitando os comandos para ir entendendo e memorizando melhor as rotinas de programação). Para executar os códigos basta clicar em Run ou selecionar as linhas e apertar as teclas Ctrl mais a tecla Enter.
As teclas de atalho Ctrl+ENTER e Ctrl + L são muito úteis para executar as linhas de código e limpar os códigos replicados no console.
Outro comando interessante, antes de inicar os códigos, é o comando rm(list=ls(all=TRUE)). A funçao rm() é utilizada para remover objetos contidos na memória do R (na aba/lapela Environment). O argumento list=ls(all=TRUE) significa que todos os objetos presentes na memória serão passados como argumentos para serem removidos.
Antes de iniciar novos cáculos é recomendável limpar a memória. Abaixo as linhas de códigos para este comando.
#Atalhos interessantes:
#Ctrl+ENTER -> Executa a linha de comando
#Ctrl+L -> Limpa o console
########################################
# Este comando limpa toda a memória do R, apagando todos
# os objetos e funções :
rm(list=ls(all=TRUE))
# O R pode ser usado como uma calculadora...
2+2
## [1] 4
# ...até como uma calculadora científica...
exp(-2)
## [1] 0.1353353
log(3*(4^(-2)))**6
## [1] 22.00372
# Pode-se facilmente atribuir valores a variáveis e trabalhar com elas
x=2
y=2
z=x+y
z
## [1] 4
# Armazenando escalares e executando operações...
Constante <- 2
Constante*Constante
## [1] 4
# Um vetor...
Temperatura <- c(15.65,34.43,12.54,17.54)
#mostra o elementos do vetor Temperatura
Temperatura
## [1] 15.65 34.43 12.54 17.54
# tamanho do vetor
length(Temperatura)
## [1] 4
# produto escalar de vetores
Temperatura*Temperatura
## [1] 244.9225 1185.4249 157.2516 307.6516
# produto interno
t(Temperatura) %*% Temperatura
## [,1]
## [1,] 1895.251
# produto externo
Temperatura %*% t(Temperatura)
## [,1] [,2] [,3] [,4]
## [1,] 244.9225 538.8295 196.2510 274.5010
## [2,] 538.8295 1185.4249 431.7522 603.9022
## [3,] 196.2510 431.7522 157.2516 219.9516
## [4,] 274.5010 603.9022 219.9516 307.6516
#Transposta
t(Temperatura)
## [,1] [,2] [,3] [,4]
## [1,] 15.65 34.43 12.54 17.54
A declaração de uma função é certamente um dos procedimentos mais imporatntes. A sintaxe para a declaração de uma função é relativamente simples.
Digita-se primeiramente o nome da função, utiliza-se o sinal <- para atribuir ao nome o conteúdo da função que é dado por function(argumentos da função){conteúdo da função}
A seguir, um exemplo de uma função:
# Declarando uma função quadrática...
funcaoQuadratica <- function(x){
##O resultado da função será armazenado na variável resultado
resultado=x^2+5
##Retornando o resultado da função
return(resultado)
}
Para chamar a função basta digitar o seu nome e passar a ela o argumento desejado. Ao executar a função ela retornará o resultado.
#Chamando a funcao
funcaoQuadratica(x=2)
## [1] 9
Para visualizar a função em um gráfico, pode-se utilizar o comando plot e passar automaticamente os argumentos, como apresentado abaixo.
#Primeiramente podemos criar uma sequencia de coordenadas x
x=seq(from=-10,to=10,by=0.5)
#Vendo os argumentos que foram criados e armazenados no vetor x
x
## [1] -10.0 -9.5 -9.0 -8.5 -8.0 -7.5 -7.0 -6.5 -6.0 -5.5 -5.0
## [12] -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5
## [23] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0
## [34] 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0
#Podemos agora chamar a função plot para visualizar os pontos f(x)
plot(funcaoQuadratica(x))
#Vamos dar uma melhorada no gráfico colocando um título, atribuindo nome para os eixos e passando uma linha ligando os pontos plotados.
plot(funcaoQuadratica(x),main="Título do Gráfico: Função Quadrática",xlab="Eixo x", ylab="Eixo y = f(x)")
lines(funcaoQuadratica(x),col="red")
Podemos derivar funções no R. Neste caso, vamos derivar a função quadrática do exemplo anterior e salvar o resultado como uma função para plotarmos a derivada e a função quadrática juntos.
No caso da derivada, vamos usar uma função pré-existente chamada deriv.
O primeiro argumento que damos a função deriv é a formula de f(x). Vamos usar a função que definimos anteriormente (x^2+5). Contudo, é preciso usar o símbolo “~” antes de inserirmos a expressão da função, e como segundo segundo argumento da função deve ser passado o nome da variável x entre aspas.
#Derivando e salvando a expressão da derivada na variável derivada. Para derivar usamos a função
# deriv
#O primeiro argumento que damos a função deriv é a formula de f(x), neste caso vamos usar a função Quadratica x^2+5 que definimos anteriormente. Depois do "~", inserimos a variável x entre aspas.
derivada<-deriv(~x^2+5,"x")
Vamos ver como ficou a derivada
derivada
## expression({
## .value <- x^2 + 5
## .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
## .grad[, "x"] <- 2 * x
## attr(.value, "gradient") <- .grad
## .value
## })
Bem, meio confuso isso, né?
Mas o que saiu aí é na verdade o que está contido dentro da variável derivada, que possui uma série de elementos, incluindo, a função da derivada.
Observe a linha que contém:
.grad[, “x”] <- 2 * x
Esta é a derivada da nossa função quadrática.
Podemos manualmente criar uma nova função com esta expressão ou usar a função attr(.value,“gradient”) que foi automaticamente criada com a expressão da derivada. Essa função requer como argumento .value, no caso a variável que utilizamos para armazenar a derivada, e precisamos usar a expressão “gradient”, como segundo argumento. Assim, podemos calcular os valores das derivadas no vetor x de pontos que criamos com esta função. Vejamos.
attr(eval(derivada),"gradient")
## x
## [1,] -20
## [2,] -19
## [3,] -18
## [4,] -17
## [5,] -16
## [6,] -15
## [7,] -14
## [8,] -13
## [9,] -12
## [10,] -11
## [11,] -10
## [12,] -9
## [13,] -8
## [14,] -7
## [15,] -6
## [16,] -5
## [17,] -4
## [18,] -3
## [19,] -2
## [20,] -1
## [21,] 0
## [22,] 1
## [23,] 2
## [24,] 3
## [25,] 4
## [26,] 5
## [27,] 6
## [28,] 7
## [29,] 8
## [30,] 9
## [31,] 10
## [32,] 11
## [33,] 12
## [34,] 13
## [35,] 14
## [36,] 15
## [37,] 16
## [38,] 17
## [39,] 18
## [40,] 19
## [41,] 20
Bem, para não ficar tão confuso, vamos simplesmente criar uma função com expressão derivada e plotar os gráficos da derivada e da função quadrática original.
#Função que contém a expressão da derivada
funcaoDerivada<-function(x){return(2*x)}
#Plotando a função quadrática, atribuindo o título (main), o nome do eixo (xlab), o nome do eixo y (ylab),o gráfico como linha (type="l"), o tipo de linha (lty=1) e a cor (col).
plot(funcaoQuadratica(x),main="Função Quadrática e Sua Derivada",xlab="Eixo x", ylab="f(x) e f'(x)",type="l",lty=1,col="red")
#Inserindo a função derivada
lines(funcaoDerivada(x),lty=2,col="blue")
#Configurando a legenda
legend("top",c("f(x)","f'(x)"),col=c("red","blue"),lty=c(1,2))
Observe que precisamos configurar o limite em y para poder visualizar melhor, vamos repetir o código ajustando os limites em y.
#Função que contém a expressão da derivada
funcaoDerivada<-function(x){return(2*x)}
#Plotando a função quadrática, atribuindo o título (main), o nome do eixo (xlab), o nome do eixo y (ylab),o gráfico como linha (type="l"), o tipo de linha (lty=1) e a cor (col).
plot(funcaoQuadratica(x),main="Função Quadrática e Sua Derivada",xlab="Eixo x", ylab="f(x) e f'(x)",type="l",lty=1,col="red",ylim=c(-20,120))
#Inserindo a função derivada
lines(funcaoDerivada(x),lty=2,col="blue")
Também podemos integrar utilizando a função integrate() e passando como argumento a ela a função, neste caso, vamos usar a função quadrática definida anteriormente, e os limites de integração inferior (lower) e superior (upper).
Vamos armazenar o resultado da integração na variável integral e depois verificar seu valor.
# Integrando numericamente...
integral=integrate(funcaoQuadratica, lower = -5, upper = 5)
integral
## 133.3333 with absolute error < 1.5e-12
Antes de criarmos uma matriz vamos armazenar em um vetor chamado Dados uma sequência numérica de 1 até 12, usando a função c(), que é uma função que concatena os argumentos passados a ela. É possível concater números ou caracteres, por exemplo:
concatenar=c("c","o","n","c","a","t","e","n","a","r")
concatenar
## [1] "c" "o" "n" "c" "a" "t" "e" "n" "a" "r"
Vamos criar uma sequência de 1 a 12 e armazenar na variável Dados.
# Uma matriz...
Dados <- c(1:12)
Dados
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
Agora vamos reorganizar o vetor Dados em uma matriz chamada Mat1 com 4 linhas (rows) e 3 colunas (3). A função matrix() recebe como argumento os elementos, neste caso usaremos o vetor Dados e o número de linhas nrow e colunas ncol.
Observe, que o comando padrão vai criando as colunas de quatro em quatro elementos do vetor.
Mat1 <- matrix(Dados,nrow=4,ncol=3)
Mat1
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
É possível ir criando as linhas a cada quatro elementos do vetor, basta inserir como argumento na função matrix a expressão by row.
Mat2 <- matrix(Dados,nrow=4,ncol=3,byrow=TRUE)
Mat2
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
## [4,] 10 11 12
Abaixo algumas operações básicas com as matrizes Mat1 e Mat2.
#Somando as matrizes
Mat1+Mat2
## [,1] [,2] [,3]
## [1,] 2 7 12
## [2,] 6 11 16
## [3,] 10 15 20
## [4,] 14 19 24
#Multiplicação matricial
t(Mat1) %*% Mat2
## [,1] [,2] [,3]
## [1,] 70 80 90
## [2,] 158 184 210
## [3,] 246 288 330
#Multiplicação elemento por elemento
Mat1*Mat2
## [,1] [,2] [,3]
## [1,] 1 10 27
## [2,] 8 30 60
## [3,] 21 56 99
## [4,] 40 88 144
# O R "recicla" os operandos quando são de tipos diferentes...
1/Mat1
## [,1] [,2] [,3]
## [1,] 1.0000000 0.2000000 0.11111111
## [2,] 0.5000000 0.1666667 0.10000000
## [3,] 0.3333333 0.1428571 0.09090909
## [4,] 0.2500000 0.1250000 0.08333333
# Elevando os elementos da matriz 2 ao quadrado
Mat2^2
## [,1] [,2] [,3]
## [1,] 1 4 9
## [2,] 16 25 36
## [3,] 49 64 81
## [4,] 100 121 144
# Gerando duas matrizes com valores aleatórios, inteiros, de 0 a 10
Mat1 <- matrix(round(runif(12,0,10)),nrow=4,ncol=3)
Mat2 <- matrix(round(runif(12,0,10)),nrow=4,ncol=3)
Mat1; Mat2
## [,1] [,2] [,3]
## [1,] 7 0 3
## [2,] 8 1 9
## [3,] 2 0 1
## [4,] 5 0 0
## [,1] [,2] [,3]
## [1,] 10 9 8
## [2,] 1 10 4
## [3,] 10 3 3
## [4,] 10 0 6
# Calculando a inversa de uma matriz...
solve(t(Mat1) %*% Mat2)
## [,1] [,2] [,3]
## [1,] -0.03882992 -1.4219519 0.1667098
## [2,] -0.03442920 -0.8407973 0.1211494
## [3,] 0.09578048 2.7074812 -0.3445509
A listas consistem em estruturas importantes no R. Algumas funções que utilizamos de pacotes já existentes retornam listas. Uma lista pode conter diferente estruturas de dados. É possível armazenar matrizes, caracteres, números, vetores, tudo junto em uma lista.
Vamos armazenar na variável Lista uma lista contendo uma série de objetos diferentes, o número 2, um vetor contendo os números 4,5,6, a palavra Gato, um vetor contendo as palavras Cachorro e bola e os inversos dos números que compõem a Matriz Mat1 que trabalhamos nos passos anteriores.
Lista <- list(2, c(4,5,6), "Gato", c("Cachorro", "bola"), 1/Mat1)
Lista
## [[1]]
## [1] 2
##
## [[2]]
## [1] 4 5 6
##
## [[3]]
## [1] "Gato"
##
## [[4]]
## [1] "Cachorro" "bola"
##
## [[5]]
## [,1] [,2] [,3]
## [1,] 0.1428571 Inf 0.3333333
## [2,] 0.1250000 1 0.1111111
## [3,] 0.5000000 Inf 1.0000000
## [4,] 0.2000000 Inf Inf
Observe que cada elemento na lista recebe um número, por exemplo o elemento [[1]] é o número 2, o elemento [[2]] é o vetor 4,5,6, o elemento [[3]] é a palavra Gato, o elemento [[4]] o vetor contendo as palavras Cachorro e bola, e o elemento [[5]] os valores invertidos da Matriz Mat1.
Para acessar os elementos da Lista passamos como argumento a variável list ao número do elemento desejado, por exemplo:
#Acessando o elemento 1
Lista[[1]]
## [1] 2
#Acessando o elemento2
Lista[[2]]
## [1] 4 5 6
#Acessando o elemento 3
Lista[[3]]
## [1] "Gato"
#Acessando o elemento 4
Lista[[4]]
## [1] "Cachorro" "bola"
#Acessando o elemento 5
Lista[[5]]
## [,1] [,2] [,3]
## [1,] 0.1428571 Inf 0.3333333
## [2,] 0.1250000 1 0.1111111
## [3,] 0.5000000 Inf 1.0000000
## [4,] 0.2000000 Inf Inf
Se quisermos acessar apenas o segundo termo do vetor que compõe o elemento [[2]], usamos a seguinte sintaxe
Lista[[2]][2]
## [1] 5
Para acessar o primeiro e segundo termos do segundo elemento da lista, podemos utilizar o seguinte comando:
Lista[[2]][1:2]
## [1] 4 5
Agora se quisermos, por exemplo, acessar o termo que está na terceira linha, na segunda coluna da matriz (elemento 5 da lista) procedemos assim:
Lista[[5]][3,2]
## [1] Inf
A seguir, alguns exemplos de como calcular desvio padrão e média com funções básicas que vimos anteriormente e, mais a frente, calculando os mesmos parâmetros estatísticos diretamente a partir das funções existentes no R, a função mean() para média, e a função sd() para o desvio padrão.
# R utiliza aritimética vetorial...
# Exemplo: Calculando a média e o desvio-padrão do peso de estudantes...
peso <- c(60,72,57,90,95,72)
peso
## [1] 60 72 57 90 95 72
# Calculando a média (passo-a-passo)
sum(peso)
## [1] 446
sum(peso)/length(peso)
## [1] 74.33333
# Salvando a média no objeto Xbar...
Xbar <- sum(peso)/length(peso)
# Calculando o Desvio-Padrão passo-a-passo...
peso - Xbar
## [1] -14.333333 -2.333333 -17.333333 15.666667 20.666667 -2.333333
(peso - Xbar)^2
## [1] 205.444444 5.444444 300.444444 245.444444 427.111111 5.444444
sum((peso - Xbar)^2)
## [1] 1189.333
DesvPadrao <- sqrt(sum((peso - Xbar)^2)/(length(peso) - 1))
DesvPadrao
## [1] 15.42293
# Como a linguagem R foi desenvolvida para computação estatística,
# muitas funções já estão programadas...
mean(peso)
## [1] 74.33333
sd(peso)
## [1] 15.42293
# Apresentando quantos objetos foram criados
objects()
## [1] "concatenar" "Constante" "Dados"
## [4] "derivada" "DesvPadrao" "funcaoDerivada"
## [7] "funcaoQuadratica" "integral" "Lista"
## [10] "Mat1" "Mat2" "peso"
## [13] "Temperatura" "x" "Xbar"
## [16] "y" "z"
#Limpando da memória apenas os objetos Mat1, Mat2 e Temperatura
rm(Mat1, Mat2,Temperatura)
#Limpando toda a memória
rm(list=ls(all=TRUE)) # apagando todos os objetos da memória...
Veremos agora como carregar dados externos e salvá-los. Ou seja, como ler um arquivo com dados em formato texto .txt ou Csv .csv.
Um comando muito importante para quem está manipulando arquivos é verificar qual a pasta padrão que o R está utilizando para ler e salvar arquivos.
Para verificar qual a pasta do seu computador está configurada como padrão utilize o comando getwd()
getwd()
## [1] "E:/Blog/2019-04-21"
Pode-se simplesmente colocar os arquivos os quais se pretende ler nesta pasta, ou, pode-se estabelecer outra pasta de trabalho com o comando stwd(“inserir o caminho das pastas”), passando como argumento o caminho ou endereço da pasta desejada.
Apenas a título de exemplo, insiro abaixo o mesmo caminho.
setwd("E:/Blog/2019-04-21")
Carregaremos agora para o R arquivos com as extensões .txt, .csv.
Antes baixe os arquivos dadoschuva.txt e dadoschuva.csv
A partir deste link
E salve-os na pasta que foi configurada como diretório de trabalho do R.
Vamos ler o arquivo dadoschuva.txt com o comando read.table (“nome do arquivo”) e salvar seu conteúdo na variável dadoschuva.
#Veja como e fácil ler um arquivo txt
dadoschuva<-read.table("dadoschuva.txt",sep=",")
Usamos o mesmo comando que foi empregado para ler arquivo txt
#Lendo um arquivo csv
dadoschuva2<-read.table("dadoschuva.csv",sep=",")
Vamos criar um arquivo txt contendo uma matriz e salvar como um arquivo txt na pasta do diretório corrente. Abaixo a sequência.
#salvando um arquivo txt
sequencia<-seq(1:10)
sequencia
## [1] 1 2 3 4 5 6 7 8 9 10
matriz<-matrix(sequencia,nrow=10,ncol=2,byrow=TRUE)
write.table(matriz,file="matriz.txt",sep=",",row.names=FALSE,col.names=FALSE)
#salvando um arquivo csv
write.csv(matriz,file="matriz.csv")
Veja como é fácil manipular os dados
#acessando um elemento específico da matriz ou dataframe
dadoschuva[1,2]
## [1] 0
#Pegando os elementos de uma linha
linha1<-dadoschuva[1,]
linha1
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
## 1 1962 0 0 41 1 1 0 0 0 0 10 0 31 1 0 33 0 0 0 0
## V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36 V37
## 1 0 1.4 6.2 1 0 0 3 23 0 0 54.4 6.6 0 9 21.2 12 17
## V38 V39 V40 V41 V42 V43 V44 V45 V46 V47 V48 V49 V50 V51 V52 V53 V54
## 1 0 4.2 7.6 5.2 7 1.6 0 0 0 0 0 0 0 19.8 0 0 39
## V55 V56 V57 V58 V59 V60 V61 V62 V63 V64 V65 V66 V67 V68 V69 V70 V71
## 1 26.4 2.8 3 0.3 0 0 58 18 12 0 2 1.6 12.2 17.2 11.8 1.2 21.6
## V72 V73 V74 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85 V86 V87
## 1 11 5.4 11.4 34 52.8 11.6 12 10.6 2.2 3.4 23.8 18.2 3.3 2.6 12.3 0
## V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100 V101 V102 V103
## 1 6.7 5.4 4.8 49.7 8.1 11.1 0 0 0 0 24 44.4 12.1 0 30 0
## V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115 V116 V117
## 1 0 0 0 4 0 0 0 0 27 1 0 0 5.4 1
## V118 V119 V120 V121 V122 V123 V124 V125 V126 V127 V128 V129 V130 V131
## 1 28.5 0 0 0 0 0 0 1.1 0.2 12.6 3.6 32.2 16.4 4.5
## V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142 V143 V144 V145
## 1 0.7 14.3 30.2 1.6 22.7 15.1 52.8 16 14.9 0.2 0.5 0 0 2.9
## V146 V147 V148 V149 V150 V151 V152 V153 V154 V155 V156 V157 V158 V159
## 1 1.6 0.6 9.3 0 0 0 0 0 0 0 0 0 0 0
## V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170 V171 V172 V173
## 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0
## V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184 V185 V186 V187
## 1 10 9.2 3 0 0 0 0 0 0 0 0 0 0 0
## V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199 V200 V201
## 1 0 0 0 0.2 0.1 0 32.9 0.7 11 0 0 4 40.4 0
## V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212 V213
## 1 0 3.4 40 0 0 1 0 0 0 2.5 3 4.8
linha2<-dadoschuva[2,]
linha2
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19
## 2 1963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.5 0 0
## V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36
## 2 0 18.9 0 0 0 0 0 0 0 21 4 0.3 0.8 32.8 0.1 24 2.7
## V37 V38 V39 V40 V41 V42 V43 V44 V45 V46 V47 V48 V49 V50 V51 V52 V53
## 2 0 0 0 0 2 47 9.6 44.4 0 47.4 132.8 1 0 10.7 0 0 0
## V54 V55 V56 V57 V58 V59 V60 V61 V62 V63 V64 V65 V66 V67 V68 V69 V70 V71
## 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.8 0 0 0
## V72 V73 V74 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85 V86 V87
## 2 0 0 0 0 0 33.2 0 54.5 1.9 0 13.5 14.3 106.8 14.1 0 0
## V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100 V101 V102 V103
## 2 0 0 0 12.8 2.1 12 3.2 3.2 0 0 1.5 37.8 0 1.5 11 3.3
## V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115 V116 V117
## 2 3.2 6.5 21.6 20.1 37.3 61.5 5.7 0 9.9 53.8 23.5 22.6 36.2 46.9
## V118 V119 V120 V121 V122 V123 V124 V125 V126 V127 V128 V129 V130 V131
## 2 4.6 0 18.3 0 21.2 6.8 2.1 0 28.8 0.2 3.3 34.4 54 9.2
## V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142 V143 V144 V145
## 2 0 0 0 31.1 21 3.9 0.2 2.4 7.6 1 0 28.4 24.1 14.2
## V146 V147 V148 V149 V150 V151 V152 V153 V154 V155 V156 V157 V158 V159
## 2 24.7 0 7.4 0 0 36 0 0 0 0 4.8 0 0.1 0
## V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170 V171 V172 V173
## 2 0.3 0.1 0 0 0 0 0 0 0 0 0 21.3 0 14.2
## V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184 V185 V186 V187
## 2 0 0 0 0 0 0 42.2 1 16.8 0 111.8 0.6 13.8 45
## V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199 V200 V201
## 2 0.8 0 0 0 0 0 0 0 0 0 0 0 0 0
## V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212 V213
## 2 0 0 0 0 0 0 0 0 0 0.1 26.1 0
#Pegando os elementos de uma coluna
coluna1<-dadoschuva[,1]
coluna1
## [1] 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
## [15] 1976 1977 1978 1979 1980 1981 1983 1984 1985 1986 1987 1988 1989 1990
## [29] 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
## [43] 2005 2006 2007 2008 2009
#combinando linhas
combinacao<-rbind(linha1,linha2)
combinacao
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19
## 1 1962 0 0 41 1 1 0 0 0 0 10 0 31 1 0 33 0.0 0 0
## 2 1963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.5 0 0
## V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36
## 1 0 0.0 1.4 6.2 1 0 0 3 23 0 0 54.4 6.6 0.0 9.0 21.2 12.0
## 2 0 18.9 0.0 0.0 0 0 0 0 0 21 4 0.3 0.8 32.8 0.1 24.0 2.7
## V37 V38 V39 V40 V41 V42 V43 V44 V45 V46 V47 V48 V49 V50 V51 V52
## 1 17 0 4.2 7.6 5.2 7 1.6 0.0 0 0.0 0.0 0 0 0.0 19.8 0
## 2 0 0 0.0 0.0 2.0 47 9.6 44.4 0 47.4 132.8 1 0 10.7 0.0 0
## V53 V54 V55 V56 V57 V58 V59 V60 V61 V62 V63 V64 V65 V66 V67 V68 V69
## 1 0 39 26.4 2.8 3 0.3 0 0 58 18 12 0 2 1.6 12.2 17.2 11.8
## 2 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 9.8 0.0
## V70 V71 V72 V73 V74 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84
## 1 1.2 21.6 11 5.4 11.4 34 52.8 11.6 12 10.6 2.2 3.4 23.8 18.2 3.3
## 2 0.0 0.0 0 0.0 0.0 0 0.0 33.2 0 54.5 1.9 0.0 13.5 14.3 106.8
## V85 V86 V87 V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100
## 1 2.6 12.3 0 6.7 5.4 4.8 49.7 8.1 11.1 0.0 0.0 0 0 24.0 44.4 12.1
## 2 14.1 0.0 0 0.0 0.0 0.0 12.8 2.1 12.0 3.2 3.2 0 0 1.5 37.8 0.0
## V101 V102 V103 V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114
## 1 0.0 30 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0 27.0 1.0 0.0
## 2 1.5 11 3.3 3.2 6.5 21.6 20.1 37.3 61.5 5.7 0 9.9 53.8 23.5
## V115 V116 V117 V118 V119 V120 V121 V122 V123 V124 V125 V126 V127 V128
## 1 0.0 5.4 1.0 28.5 0 0.0 0 0.0 0.0 0.0 1.1 0.2 12.6 3.6
## 2 22.6 36.2 46.9 4.6 0 18.3 0 21.2 6.8 2.1 0.0 28.8 0.2 3.3
## V129 V130 V131 V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142
## 1 32.2 16.4 4.5 0.7 14.3 30.2 1.6 22.7 15.1 52.8 16.0 14.9 0.2 0.5
## 2 34.4 54.0 9.2 0.0 0.0 0.0 31.1 21.0 3.9 0.2 2.4 7.6 1.0 0.0
## V143 V144 V145 V146 V147 V148 V149 V150 V151 V152 V153 V154 V155 V156
## 1 0.0 0.0 2.9 1.6 0.6 9.3 0 0 0 0 0 0 0 0.0
## 2 28.4 24.1 14.2 24.7 0.0 7.4 0 0 36 0 0 0 0 4.8
## V157 V158 V159 V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170
## 1 0 0.0 0 0.0 0.0 2 0 0 0 0 0 0 0 0
## 2 0 0.1 0 0.3 0.1 0 0 0 0 0 0 0 0 0
## V171 V172 V173 V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184
## 1 0.0 0 0.0 10 9.2 3 0 0 0 0.0 0 0.0 0 0.0
## 2 21.3 0 14.2 0 0.0 0 0 0 0 42.2 1 16.8 0 111.8
## V185 V186 V187 V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198
## 1 0.0 0.0 0 0.0 0 0 0.2 0.1 0 32.9 0.7 11 0 0
## 2 0.6 13.8 45 0.8 0 0 0.0 0.0 0 0.0 0.0 0 0 0
## V199 V200 V201 V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212
## 1 4 40.4 0 0 3.4 40 0 0 1 0 0 0 2.5 3.0
## 2 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.1 26.1
## V213
## 1 4.8
## 2 0.0
#Removendo uma coluna
combinacao<-combinacao[,-1]
combinacao
## V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
## 1 0 0 41 1 1 0 0 0 0 10 0 31 1 0 33 0.0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.5 0 0 0
## V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36 V37
## 1 0.0 1.4 6.2 1 0 0 3 23 0 0 54.4 6.6 0.0 9.0 21.2 12.0 17
## 2 18.9 0.0 0.0 0 0 0 0 0 21 4 0.3 0.8 32.8 0.1 24.0 2.7 0
## V38 V39 V40 V41 V42 V43 V44 V45 V46 V47 V48 V49 V50 V51 V52 V53
## 1 0 4.2 7.6 5.2 7 1.6 0.0 0 0.0 0.0 0 0 0.0 19.8 0 0
## 2 0 0.0 0.0 2.0 47 9.6 44.4 0 47.4 132.8 1 0 10.7 0.0 0 0
## V54 V55 V56 V57 V58 V59 V60 V61 V62 V63 V64 V65 V66 V67 V68 V69 V70
## 1 39 26.4 2.8 3 0.3 0 0 58 18 12 0 2 1.6 12.2 17.2 11.8 1.2
## 2 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 9.8 0.0 0.0
## V71 V72 V73 V74 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85
## 1 21.6 11 5.4 11.4 34 52.8 11.6 12 10.6 2.2 3.4 23.8 18.2 3.3 2.6
## 2 0.0 0 0.0 0.0 0 0.0 33.2 0 54.5 1.9 0.0 13.5 14.3 106.8 14.1
## V86 V87 V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100 V101
## 1 12.3 0 6.7 5.4 4.8 49.7 8.1 11.1 0.0 0.0 0 0 24.0 44.4 12.1 0.0
## 2 0.0 0 0.0 0.0 0.0 12.8 2.1 12.0 3.2 3.2 0 0 1.5 37.8 0.0 1.5
## V102 V103 V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115
## 1 30 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0 27.0 1.0 0.0 0.0
## 2 11 3.3 3.2 6.5 21.6 20.1 37.3 61.5 5.7 0 9.9 53.8 23.5 22.6
## V116 V117 V118 V119 V120 V121 V122 V123 V124 V125 V126 V127 V128 V129
## 1 5.4 1.0 28.5 0 0.0 0 0.0 0.0 0.0 1.1 0.2 12.6 3.6 32.2
## 2 36.2 46.9 4.6 0 18.3 0 21.2 6.8 2.1 0.0 28.8 0.2 3.3 34.4
## V130 V131 V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142 V143
## 1 16.4 4.5 0.7 14.3 30.2 1.6 22.7 15.1 52.8 16.0 14.9 0.2 0.5 0.0
## 2 54.0 9.2 0.0 0.0 0.0 31.1 21.0 3.9 0.2 2.4 7.6 1.0 0.0 28.4
## V144 V145 V146 V147 V148 V149 V150 V151 V152 V153 V154 V155 V156 V157
## 1 0.0 2.9 1.6 0.6 9.3 0 0 0 0 0 0 0 0.0 0
## 2 24.1 14.2 24.7 0.0 7.4 0 0 36 0 0 0 0 4.8 0
## V158 V159 V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170 V171
## 1 0.0 0 0.0 0.0 2 0 0 0 0 0 0 0 0 0.0
## 2 0.1 0 0.3 0.1 0 0 0 0 0 0 0 0 0 21.3
## V172 V173 V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184 V185
## 1 0 0.0 10 9.2 3 0 0 0 0.0 0 0.0 0 0.0 0.0
## 2 0 14.2 0 0.0 0 0 0 0 42.2 1 16.8 0 111.8 0.6
## V186 V187 V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199
## 1 0.0 0 0.0 0 0 0.2 0.1 0 32.9 0.7 11 0 0 4
## 2 13.8 45 0.8 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0
## V200 V201 V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212 V213
## 1 40.4 0 0 3.4 40 0 0 1 0 0 0 2.5 3.0 4.8
## 2 0.0 0 0 0.0 0 0 0 0 0 0 0 0.1 26.1 0.0
#combinando colunas
doisprimeirosdias<-cbind(dadoschuva[,2],dadoschuva[,3])
doisprimeirosdias
## [,1] [,2]
## [1,] 0.0 0.0
## [2,] 0.0 0.0
## [3,] 0.0 0.0
## [4,] 0.6 8.4
## [5,] 6.4 6.0
## [6,] 0.0 0.0
## [7,] 3.8 0.2
## [8,] 0.0 0.0
## [9,] 0.0 4.7
## [10,] 0.1 2.0
## [11,] 3.5 22.2
## [12,] 39.1 0.0
## [13,] 0.0 0.0
## [14,] 0.0 0.0
## [15,] 0.0 0.0
## [16,] 10.8 7.6
## [17,] 0.0 0.0
## [18,] 0.0 0.0
## [19,] 0.0 0.0
## [20,] 0.0 12.6
## [21,] 0.0 0.0
## [22,] 5.9 25.2
## [23,] 0.0 1.4
## [24,] 0.0 0.0
## [25,] 0.0 23.6
## [26,] 0.7 0.4
## [27,] 8.0 1.6
## [28,] 0.0 0.4
## [29,] 0.1 97.0
## [30,] 14.0 0.0
## [31,] 0.4 1.1
## [32,] 0.0 0.0
## [33,] 0.0 0.0
## [34,] 0.0 0.0
## [35,] 0.0 0.0
## [36,] 0.0 7.7
## [37,] 2.2 6.1
## [38,] 0.0 0.0
## [39,] 0.0 0.5
## [40,] 0.0 0.0
## [41,] 0.2 0.0
## [42,] 0.0 0.0
## [43,] 9.5 0.0
## [44,] 0.3 2.8
## [45,] 0.0 4.7
## [46,] 0.0 13.7
## [47,] 0.0 0.0
chuva<-dadoschuva[,-1]
#total anual de chuva
chuvaano<-rowSums(chuva)
chuvaano
## [1] 1445.3 1806.2 1686.6 1790.9 1399.1 1378.9 1262.0 1768.7 1275.4 1317.0
## [11] 1800.2 1287.5 1257.5 1280.6 1183.1 1420.5 1281.7 1751.4 1205.9 1870.8
## [21] 1335.9 1212.7 1132.2 1159.6 1682.2 1390.4 1420.4 1512.5 1767.3 1340.0
## [31] 1365.7 1269.2 1048.9 1501.1 1154.6 1063.0 1321.3 1211.0 1188.8 1252.6
## [41] 1737.4 1239.9 1420.6 1524.0 1406.2 1451.4 1395.3
#media anual dos totais de chuva
mean(chuvaano)
## [1] 1403.691
#desvio padrao dos totais de chuva
sd(chuvaano)
## [1] 219.8143
#maior chuva anual
max(chuvaano)
## [1] 1870.8
#menor chuva anual
min(chuvaano)
## [1] 1048.9
#mediana da chuva anual
median(chuvaano)
## [1] 1365.7
#Plotando os totais de chuva em função dos anos
#Uma plotagem simples e rápida
plot(chuvaano)
#Uma plotagem mais sofisticada
ano<-dadoschuva[,1]
plot(ano,chuvaano,xlab="Ano",ylab="Total anual de chuva (mm)",main="Total Anual de Chuva",pch=16)
lines(ano,chuvaano,col="darkred")
#Carrega pacote graphics
require(graphics)
#Define a função 3D
f<-function(x1,y1) {(1-x1)^2+100*(y1-x1^2)^2}
#Atribui valores para x e y
x<-seq(-2,2,by=0.15)
y<-seq(-1,3,by=0.15)
x
## [1] -2.00 -1.85 -1.70 -1.55 -1.40 -1.25 -1.10 -0.95 -0.80 -0.65 -0.50
## [12] -0.35 -0.20 -0.05 0.10 0.25 0.40 0.55 0.70 0.85 1.00 1.15
## [23] 1.30 1.45 1.60 1.75 1.90
y
## [1] -1.00 -0.85 -0.70 -0.55 -0.40 -0.25 -0.10 0.05 0.20 0.35 0.50
## [12] 0.65 0.80 0.95 1.10 1.25 1.40 1.55 1.70 1.85 2.00 2.15
## [23] 2.30 2.45 2.60 2.75 2.90
#Calcula o valor da função em um ponto
f(-2,-0.70)
## [1] 2218
#Salva as coordenadas z referentes ao conjunto de pares ordenados x e y criados
z<-outer(x,y,f)
#Plota o gráfico
persp(x,y,z,phi=45,theta=-100,col="yellow",shade=0.5,ticktype="detailed")