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