[R-es] Sobre categorías de factores extraídos de un data.frame

Marcuzzi, Javier Rubén javier.ruben.marcuzzi en gmail.com
Mie Jul 4 23:21:04 CEST 2012


Estimado Freddy López

Si usted tiene más de 1.000.000 de individuos, con o sin mediciones 
repetidas por individuo, pero algunos entran en categorías donde son únicos, 
creo que lo que está desproporcionado son las categorías, son muchas, por 
ejemplo, usted tiene individuos de 1 año, de 2 años, de 3 años, ..., ¿se 
podría crear una categoría con menores de 10, otra con entre 10 y 20, y así 
sucesivamente?

Javier Marcuzzi

-----Mensaje original----- 
From: Freddy López
Sent: Wednesday, July 04, 2012 5:44 PM
To: r-help-es en r-project.org
Subject: [R-es] Sobre categorías de factores extraídos de un data.frame

Hola estimados miembros de la lista,

Tengo una inquietud.

Les cuento: tengo un conjunto de datos en un data.frame. Algunas de las
variables que están en él son del tipo factor. Estos factores,
naturalmente, tiene categorías: a veces demasiadas categorías y muchas de
ellas con 1 individuo contemplando el data.frame más de 1 millón de
individuos.

Estas pequeñas cantidades creo que me están estropeando parte de los
análisis que estoy realizando y he decidido realizar todo solo con aquellos
factores cuyas categorías sean al menos un valor k (donde k con toda
seguridad no bajará de al menos 1000, pero esto no lo he decidido :) ).

La decisión muy bien, pero al hacer la selección, por ejemplo con sqldf, 
me
quedan aún las categorías que no estoy contemplando con un conteo en 0.
Ejemplo:

# datos de ejemplo:
> data.frame(letras=c(rep("a",2),rep("b",2),rep("c",2)),otra=runif(6))
  letras       otra
1      a 0.04860339
2      a 0.79562345
3      b 0.42864128
4      b 0.10950613
5      c 0.69018354
6      c 0.15778063
> ej<-data.frame(letras=c(rep("a",2),rep("b",2),rep("c",2)),otra=runif(6))

# selecciono un subconjunto de los anteriores
> sqldf("select * from ej where letras='a'")
  letras      otra
1      a 0.7142700
2      a 0.7124181
> res<-sqldf("select * from ej where letras='a'")

# he aquí el resultado:
> table(res$letras)

a b c
2 0 0

Esos dos últimos ceros son los que no estoy necesitando. También se
comporta igual si utilizo:

> table(ej[ej$letras=='a',]$letras)

a b c
2 0 0

dos ceros que no necesito. Si utilizo

> table(factor(ej[ej$letras=='a',]$letras))

a
2

funciona como estoy interesado pero en mi data.frame original tengo más de
100 variables y no me figuro una manera poco redundante para solucionarlo.

¿Alguien tendrá idea de cómo puedo deshacerme de las categorías que no
tengan conteos en un data.frame?

Muchas gracias.

-- 
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»

JRR Tolkien

[[alternative HTML version deleted]]







_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es