El arte de programar en R Un leguaje para la estadística - page 39

CAPÍTULO 2. LOS DATOS Y SUS TIPOS
36
que facilita este tipo de análisis, a saber: la clase
factor
. Para entender esta
clase, procedamos primeramente a transformar el vector
mes.nacimiento
a un
factor, mediante la función de conversión
as.factor()
, como sigue:
Fmes.nacimiento
<-
as.factor
(mes.nacimiento)
Fmes.nacimiento
## [1] Dic Feb Oct Mar Feb Nov Abr Dic Feb Oct Dic
## Levels: Abr Dic Feb Mar Nov Oct
# y generamos la impresión ahora con el factor:
paste
(persona[
7
],
"nacio en el mes de"
, Fmes.nacimiento[
7
])
## [1] "Sutano nacio en el mes de Abr"
Si se compara la impresión del factor
Fmes.nacimiento
con la del vector
mes.nacimiento
, se podría pensar que “no ha pasado mucho”. De hecho, la
impresión
bonita
con la función
paste()
, ha resultado igual. Sin embargo, el
factor exhibe una estructura adicional denominada
Levels
, en la que se han
registrado e identificado los elementos del vector sin repetición; esto es, los
nombres únicos de los meses, en este caso. La estructura interna de esta clase
se puede descubrir:
unclass
(Fmes.nacimiento)
## [1] 2 3 6 4 3 5 1 2 3 6 2
## attr(,"levels")
## [1] "Abr" "Dic" "Feb" "Mar" "Nov" "Oct"
Como se puede ver, el núcleo de la clase son dos vectores. El primero, es un
vector de índices enteros, que sustituye al vector de caracteres original, y el se-
gundo es un vector de caracteres, que contiene los niveles (
Levels
) o categorías,
a los que hace referencia el primer vector. La Fig. 2.5 muestra esta disposición,
en la que, con motivo de no tener un desplegado confuso, se grafican sólo tres
de las referencias del vector de índices al vector de niveles.
Abordemos ahora el problema que motivó la presente discusión: la frecuen-
cia de aparición de ciertos elementos en un vector. La función
table()
toma
típicamente como argumento un factor y regresa como resultado justamente la
frecuencia de aparición de los niveles en el vector de índices:
table
(Fmes.nacimiento)
## Fmes.nacimiento
## Abr Dic Feb Mar Nov Oct
## 1 3 3 1 1 2
1...,29,30,31,32,33,34,35,36,37,38 40,41,42,43,44,45,46,47,48,49,...198
Powered by FlippingBook