# É er(R)ando que se aprende - 1
Uma introdução a linguagem R para análise de dados - 1.
Parte 1: http://bit.ly/aprendeerrando
## CÁLCULOS SIMPLES
Usando a linha de comando de R podemos somar
```r
> 1+1
[1] 2
```
subtrair,
```r
> 14-6
[1] 8
```
multiplicar,
```r
> 3*4
[1] 12
```
dividir,
```r
> 47/11
[1] 4.272727
```
e realizar cálculos mais complexos como se fosse uma calculadora científica.
```r
> sin(5)
[1] -0.9589243
```
Para definir um decimal no R usamos o . e não a ,
```r
> 2.3*2
[1] 4.6
> 2,3*2
Error: syntax error
```
Podemos também atribuir o resultado de um cálculo à uma variável
```r
> 47/11-> resultado
> resultado
[1] 4.272727
> resultado*11
[1] 47
> resultado+42->resultado
> resultado
[1] 46.27273
```
## Nosso primeiro programa!
#### Calculando a média dos números de 1 a 10
```r
mean(1:10)
```
> O operador ":" cria uma sequência de números
> Dentro dos parenteses ficam os argumentos da função
> O resultado é chamado vetor
## Como pedir ajuda?
```r
?mean
??mean
apropos("mean")
```
## Testanto a vetorização dos operadores
```r
1:5 + 6:10
c(1, 3, 6, 10, 15) + c(0,1,3,6,10)
```
## Atribuição de variáveis
```r
x <- 5
y <- 1:10
?make.names
```
## Operadores lógicos

```r
! # não
& # e
| #ou
== # "igual"
> # maior
< # menor
>= # maior ou igual
<= # menor ou igual
=! # diferente
TRUE
FALSE
```
## Inspecionando variáveis
```r
class(c(TRUE, FALSE))
class(c(sqrt(1:10)))
```


### Classes mais comuns
> Numeric - Decimais
> Integer - Inteiros
> Complex - Complexos
> Character - Vetor de caracteres
> Factor - Vetor de dados categóricos
## Estrutura de dados

# Indexacao por posicao dos elementos
#### Vetores
É um conjunto de dados ordenados em linha.
```r
a2 <- c(10,20,30)
a2
a2[3]
a4 <- c("porque", "o", "gato" ,"e" ,"nosso" ,"amigo")
a4
a4[3]
```
#### Matrizes
É um conjunto de dados que possuem coordenadas de linha e coluna (tabela) em modo unico.
```r
#matrix[linha , coluna] é para indexar matrizes
d1 <- matrix(data=1:12,nrow=4,ncol=3, byrow=TRUE, dimnames = NULL)
colnames(d1) <- c("col1", "col2", "col3")
rownames(d1) <- c("linhaA", "linhaB", "linhaC", "linhaD")
d1
d2<-matrix(c("nao", "atire", "o", "pau", "no", "gato", "porque", "o", "gato" ,"e" ,"nosso" ,"amigo"), ncol=3, nrow=4, byrow=T)
d2
d2[1, 2] # me retorna o elemento de posição [1,2]
d2[,3] # me retorna a coluna 3
d2[,-3] # me retorna tudo, exceto a coluna 3
d1[c(1,3),] # me retorna a linha 1 e 3
d1[c(1:3),] # me retorna as linhas 1 até a 3
d1[c(1,3),]<-0 # input de 0 na linha 1 e 3
````
## Array
```r
# Vamos criar um array
(a <- array(1:27, dimnames = list(c("um", "dois", "tres"), c("c1", "c2", "c3"), c("m1", "m2", "m3"))))
```
## Análise de matrizes e arrays
```r
dim(d1)
dim(a)
nrow(a);ncol(a)
nrow(d1); ncol(m)
lenght(d1); lenght(a)
```
## Vetores lógicos
````r
d1 > 5
d1 >= 5
d1 ==5
d2 == "gato"
which(d1>5) #retorna a posição dos elementos indicados
posicoes<-which(d1>5, arr.ind = T) # não me dá os valores, me dá as posições desses valores!! sensacional!
````
## Data Frame
Data frames são matrizes mais gerais onde colunas podem ser compostas por diferentes tipos de objetos (numérico, lógico, categórico)
````r
dados<-data.frame(d1, d2)
dados
dados[,3]
dados[,5] #falar sobre ordem alfabética imposta no R.
dados[3,6]
#DATA FRAME: INDEXAÇÃO PELOS COMPONENTES
#indexacao por nome das variaveis (apenas colunas)
dados$X3
dados$X3[3]
````
#### As respostas "TRUE" do teste lógico assumem o valor 1 e podem ser quantificados e as respostas "FALSE" assumem o valor 0.
````r
c2<-seq(1,200, by=4)
c2
c2 > 60
sum(c2 > 60)
sum(c2 < 60)
is.na(c2)
!is.na(d1)
d1[d1 == 2]<-NA
sum(d1[!is.na(d1) == T])
````
# Trabalhando com um data.frame do próprio R
````r
randu
sum(randu$x > 0.5)
dados1<-randu[,]
colnames(dados1)<-c("largura", "altura", "comprimento")
dados1$largura > 0.5
mean(dados1$largura[dados1$largura > 0.5])
````
# Qual a posicao dos valores da coluna "largura" que sao maiores do que 0.5?
````r
which(dados1$largura > 0.5)
````
# Quantos valores são maiores do que 0.5?
````r
length(which(dados1$largura > 0.5))
dados1[which(dados1$largura > 0.5),] # exibe quais dados da coluna largura (dados1$largura>0,5) sao maiores que 0,5 e de todas as linhas.
dados1[which(dados1$largura >0.1 & dados1$altura < 0.7),] #quais dados sao assim
dados1[-which(dados1$largura >0.1 & dados1$altura < 0.7),] # quais dados (-) os que são assim, nessa condição.
````
### Listas:
São objetos que podem armazenar objetos de dados de tipos diferentes. É possível incluir data.frames, arrays, matrizes, vetores, fatores e mesmo listas em uma lista.
```r
generos <- factor(c("Masculino", "Feminino", "Indefinido")) #Fator com gêneros
vetorValores <- 1:12 #Dados
head(x = mtcars, n = 10) # Carrega as 10 primeiras linhas do data.frame mtcars (carros) da base do R (vem na instalação do R) , se colocar tail() carrega as 10 últimas
```
## Cria lista com os objetos
```r
lista <- list(vetorValores, generos, head(x = mtcars, n = 10))
lista
```
## Acessando os dados
```r
#Acessa o segundo carro (base mtcars)
lista[[3]][2,]
```
### Exercício 1 - Substituir d1[,2] por d2[,3] ## d1, d2 são objetos da aula
### Exercício 2 - Criar um data frame com d1 e d2 e então substituir a terceira linha do data frame pela quarta linha de d2
Obrigado!!