Aula 15 – Curso de R – Conversão de objetos em R
Aula 15 – Curso de R – Convertendo objetos
Página principal do blog
Todas as aulas desse curso
Aula 14 Aula 16
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, se gostarem do conteúdo 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
Convertendo objetos
Você deve ter percebido que as diferenças entre alguns tipos de objetos são pequenas, portanto, é lógico que é possível converter um objeto de um tipo para outro, alterando alguns de seus atributos.
Essa conversão será feita com uma função do tipo as.something.
O resultado de uma conversão depende obviamente dos atributos do objeto convertido.
Geralmente, a conversão segue regras intuitivas.
A tabela a seguir resume a conversão dos modos.
Conversão para | Função | Regras |
numeric | as.numeric | FALSE => 0 TRUE =>1 “1”, “2”, . . . => 1, 2, . . . “A”, . . . =>NA; |
logical | as.logical | 0 => FALSE other numbers => TRUE “FALSE”, “F” => FALSE “TRUE”, “T” => TRUE |
characteras.character | as.character | 1, 2, . . .=> “1”, “2”, . . . FALSE=> “FALSE” TRUE=> “TRUE” |
Existem funções para converter os tipos de objetos (as.matrix, as.ts, as.data.frame, as.expression,. . . )
Essas funções afetam outros atributos além dos modos, durante a conversão.
Os resultados são geralmente intuitivos.
Uma situação frequentemente encontrada é a conversão de fatores em valores numéricos.
Nesse caso, R faz a conversão com a codificação numérica dos níveis do fator:
fac <- factor(c(1, 10))
fac
#Saída
#[1] 1 10
#Levels: 1 10
as.numeric(fac)
#Saída
#[1] 1 2
Isso faz sentido ao considerar um fator de modo caractere :
fac2 <- factor(c("Male", "Female"))
fac2
#Saída:
#[1] Male Female
#Levels: Female Male
as.numeric(fac2)
#Saída
#[1] 2 1
Observe que o resultado não é NA, como seria de esperar.
Para converter um fator de modo numérico em um vetor numérico, mas, mantendo os níveis, como são originalmente especificados, é preciso primeiro converter em caractere, depois em numérico.
as.numeric(as.character(fac))
[1] 1 10
Este procedimento é muito útil se em um arquivo uma variável numérica também tiver valores não numéricos.
Vimos que read.table() em tal situação, por padrão, ler esta coluna como um fator.