Curso

Factors são variáveis em R que representam dados categóricos e armazenam seus valores em níveis. O uso principal desse recurso aparece em análises de dados, especialmente em estatística. Além disso, ele ajuda a reduzir redundância e economizar memória.
Observação: uma variável categórica assume valores baseados em rótulos ou nomes. Por exemplo, o tipo sanguíneo de uma pessoa pode ser A, B, AB ou O.
função factor
Uso: Categorizar dados com poucos valores distintos.
Parâmetros: factor(v): v pode ser um vetor de valores.
Vamos ver um exemplo de factor em ação.
No código abaixo, há duas variáveis categóricas, "Male" e "Female", também chamadas de valores do factor.
gender <- c("Male","Female","Female","Male","Female")
Vamos criar um factor para gender usando 'factor(gender)' e salvar em uma variável chamada 'gender.factor'.
gender.factor <- factor(gender)
gender.factor
- Male
- Female
- Female
- Male
- Female
Níveis:
- 'Female'
- 'Male'
O código acima gera a seguinte saída:
Male Female Female Male Female
Levels:
'Female' 'Male'
Repare que os valores são impressos como no vetor de entrada. Além disso, os "Levels" ("Female" e "Male") são ordenados em ordem alfabética.
estrutura da função factor
Vamos examinar a estrutura do factor usando 'str(gender.factor)' no código abaixo.
str(gender.factor)
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
A saída mostra um factor com 2 níveis. A função factor converte o vetor de caracteres gender em um vetor de inteiros. "Female" é o primeiro nível, codificado como 1, e "Male" é o segundo nível, codificado como 2.
O objetivo dessa codificação de texto para numérico é representar categorias de forma compacta, evitando repetições redundantes que ocupam muita memória. Usar factor reduz essa carga e economiza espaço.
alterando a ordem dos níveis
Vamos mudar a ordem dos níveis, fazendo com que "Female" passe a ser 2 e "Male" seja 1.
Criaremos um novo factor para gender alterando os níveis de "Male" e "Female" ao passá-los como vetor no argumento "levels". Por fim, salvamos o resultado na variável "gender.factor2".
gender.factor2 <- factor(gender,levels=c("Male","Female"))
gender.factor2
str(gender.factor2)
- Male
- Female
- Female
- Male
- Female
Níveis:
- 'Male'
- 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
'gender.factor2' é impresso junto com sua estrutura via 'str(gender.factor2)', onde observamos as seguintes mudanças.
Male Female Female Male Female
Levels:
'Male' 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
Agora, a codificação de "Male" é 1 e a de "Female" é 2. Isso difere de 'gender.factor', que era o contrário.
renomeando níveis de um factor
Vamos mudar os nomes dos valores do vetor de entrada usando 'levels' como primeiro argumento, com os valores "Male" e "Female", e 'labels' como segundo argumento, com os novos rótulos "Gen_Male" e "Gen_Female".
factor(gender,levels = c("Male","Female"),labels = c("Gen_Male","Gen_Female"))
- Gen_Male
- Gen_Female
- Gen_Female
- Gen_Male
- Gen_Female
Níveis:
- 'Gen_Male'
- 'Gen_Female'
Gen_Male Gen_Female Gen_Female Gen_Male Gen_Female
Levels:
'Gen_Male' 'Gen_Female'
O código acima altera o nome de "Male" para "Gen_Male" e de "Female" para "Gen_Female".
ordenando uma variável categórica
Vamos ver um exemplo com valores categóricos ordinais, em que a ordem importa. Por exemplo, para tamanho de calça, podemos ter L (Large), XL (Extra Large) e XXL (Extra Extra Large) em ordem crescente. O código abaixo cria o vetor de caracteres "L", "XL" e "XXL" armazenado em 'pant'. 'pant.factor' é a variável criada com os níveis em ordem crescente via 'levels = c("L", "XL", "XXL")' e, por fim, 'ordered = TRUE', que permite comparações de acordo com essa ordem.
pant <- c("XL","L","XL","XXL","L","XL")
pant.factor <- factor(pant,ordered = TRUE,levels = c("L","XL","XXL"))
pant.factor
pant.factor[1] > pant.factor[2]
- XL
- L
- XL
- XXL
- L
- XL
Níveis:
- 'L'
- 'XL'
- 'XXL'
TRUE
XL L XL XXL L XL
Levels:'L'< 'XL' < 'XXL'
TRUE
A saída mostra primeiro os valores do vetor (XL, L, XL, XXL, L, XL) ao imprimir 'pant.factor'. Os níveis 'L' < 'XL' < 'XXL' aparecem em ordem crescente no console. Além disso, 'pant.factor[1] > pant.factor[2]' compara se "XL" é maior que "L" nessa ordenação, resultando em TRUE.
parabéns
Parabéns, você chegou ao fim deste tutorial!
Neste tutorial, você viu a função factor em R, com exemplo, sua estrutura, como alterar a ordem e renomear níveis e, por fim, como ordenar valores categóricos.
Se quiser aprender mais sobre R, faça o curso Introduction to R da DataCamp.
Confira também nosso tutorial sobre uso de funções em R.
