Aula 12 – Curso de R – Gerando dados com R
Aula 12 – Curso de programação em R
Gerando dados no R
Antes, quero deixar meus links de afiliados pra vocês:
Hostinger
One.com
DigitalOcean
Se cadastrando, vocês poderão conhecer, usar e testar gratuitamente alguns recursos dos serviços oferecidos por eles.
Por favor, dêem um joinha 👍, curtam e compartilhem a página do Código Fluente no Facebook.
Pinterest:
https://br.pinterest.com/codigofluente/
Endereço para baixar os arquivos e o script:
https://github.com/toticavalcanti/curso_r
Gerando dados no R
Seqüências regulares
Uma sequência regular de inteiros de 1 a 30 pode ser gerada com:
x <- 1:30
O vetor resultante x tem 30 elementos.
O operador ‘:‘ (Dois pontos) tem prioridade em relação aos operadores aritméticos dentro de uma expressão:
1:10
[1] 1 2 3 4 5 6 7 8 9 10
1:10-1
[1] 0 1 2 3 4 5 6 7 8 9
1:(10-1)
[1] 1 2 3 4 5 6 7 8 9
Veja que a saída do 1:10-1 foi do zero ao 9, o 10-1 fez com que o índice começasse do zero e não do 1, que é o padrão do R.
Já no caso do 1:(10-1) a saída foi do 1 ao 9, porque com os parênteses, forçamos a precedência do 10 – 1 em relação ao ‘:‘, então na verdade, para o interpretador o 1:(10-1) é igual a 1:9, já o 1:10-1 o interpretador entende que é pra começar um índice antes, ou seja, do 0 ao 9.
Se fizermos assim:
1:10-2
[1] -1 0 1 2 3 4 5 6 7 8
Veja que a saída foi de -1 até 8, isto é, começou indexando 2(dois) números antes do 1(um) que é o padrão do R.
Outro teste:
1-1:10-1
[1] -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
A função seq pode gerar seqüências de números reais da seguinte forma:
seq(1, 5, 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
O primeiro número indica o começo da seqüência, o segundo o fim, e o terceiro, o incremento a ser usado para gerar a sequência.
Pode-se usar também:
seq(length=9, from=1, to=5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Pode-se também digitar diretamente os valores usando a função c:
c(1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Também é possível, se alguém quiser inserir alguns dados no teclado, usar a função scan simplesmente com as opções padrão:
z <- scan()
1: 2
2: 3
3: 1
4:
Read 3 items
z
[1] 2 3 1
A função rep cria um vetor com todos os seus elementos idênticos:
rep(1, 30)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
A função sequence cria uma sequências de inteiros, onde cada final é dado pelos números fornecidos como argumentos:
sequence(4:5)
[1] 1 2 3 4 1 2 3 4 5
sequence(c(10,5))
[1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5
A função gl (generate levels) é muito útil porque gera série de fatores regulares.
O uso desta função é gl (k, n) onde k é o número de níveis (ou classes), e n é o número de replicações em cada nível.
Duas opções podem ser usadas: comprimento para especificar o número de dados produzidos, e rótulos para especificar os nomes dos níveis do fator.
Exemplos:
gl(3, 5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
gl(3, 5, length=30)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
gl(2, 6, label=c("Male", "Female"))
[1] Male Male Male Male Male Male
[7] Female Female Female Female Female Female
Levels: Male Female
gl(2, 10)
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
Levels: 1 2
gl(2, 1, length=20)
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Levels: 1 2
gl(2, 2, length=20)
[1] 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
Levels: 1 2
Temos também a função expand.grid() que cria um data frame com todas as combinações de vetores ou fatores dados como argumentos:
expand.grid(h=c(60,80), w=c(100, 300), sex=c("Male", "Female"))
h w sex
1 60 100 Male
2 80 100 Male
3 60 300 Male
4 80 300 Male
5 60 100 Female
6 80 100 Female
7 60 300 Female
8 80 300 Female