Fatores

Criação


Fator não ordenado


ufs <- c("sp", "sp", "pr", "sp", "pr", "pr", "sp", "sp", "pr", "pr")
ufs
##  [1] "sp" "sp" "pr" "sp" "pr" "pr" "sp" "sp" "pr" "pr"


uf <- factor(ufs)
uf
##  [1] sp sp pr sp pr pr sp sp pr pr
## Levels: pr sp
uf <- factor(ufs, levels = c("pr", "sp"), labels = c("Paraná", "São Paulo"))
uf
##  [1] São Paulo São Paulo Paraná    São Paulo Paraná    Paraná    São Paulo
##  [8] São Paulo Paraná    Paraná   
## Levels: Paraná São Paulo


Fator ordenado


tamanho <- c("p", "m", "m", "p", "g", "m", "g", "p", "g", "m")
tamanho
##  [1] "p" "m" "m" "p" "g" "m" "g" "p" "g" "m"


tamanho <- factor(tamanho, levels=c("p", "m", "g"), ordered = T)
tamanho
##  [1] p m m p g m g p g m
## Levels: p < m < g


tamanho <- factor(tamanho, levels=c("p", "m", "g"), labels = c("pequeno", "médio", "grande"), ordered = T)
tamanho
##  [1] pequeno médio   médio   pequeno grande  médio   grande  pequeno grande 
## [10] médio  
## Levels: pequeno < médio < grande


Classe e tipo


class(uf)
## [1] "factor"


class(tamanho)
## [1] "ordered" "factor"


typeof(uf)
## [1] "integer"


typeof(tamanho)
## [1] "integer"


Teste

is.factor(tamanho)
## [1] TRUE


is.vector(tamanho)
## [1] FALSE


Conversão


Conversão para numeric:

as.numeric(tamanho)
##  [1] 1 2 2 1 3 2 3 1 3 2


Conversão para character:

as.character(tamanho)
##  [1] "pequeno" "médio"   "médio"   "pequeno" "grande"  "médio"   "grande" 
##  [8] "pequeno" "grande"  "médio"


Manipilação


Obtendo os níveis:

levels(uf)
## [1] "Paraná"    "São Paulo"


Alterando os níveis:

levels(uf) <- c("PR", "SP")
uf
##  [1] SP SP PR SP PR PR SP SP PR PR
## Levels: PR SP


Alterando a ordem dos níveis (SP primeiro):

uf <- relevel(uf, "SP")
uf
##  [1] SP SP PR SP PR PR SP SP PR PR
## Levels: SP PR


Obtendo a quantidade de níveis:

nlevels(uf)
## [1] 2


Obtendo os valores mínimo e máximo:

min(uf)
## Error in Summary.factor(structure(c(1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, : 'min' not meaningful for factors


min(tamanho)
## [1] pequeno
## Levels: pequeno < médio < grande


max(tamanho)
## [1] grande
## Levels: pequeno < médio < grande
Anterior
Próximo