Blogalia

"En el arte marcial como en la vida diaria. En la vida diaria como en un arte marcial."

Aikido

Sígueme en Twitter

<Abril 2017
Lu Ma Mi Ju Vi Sa Do
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
             


Todas las Historias

VELOCIDAD DE ESCAPE

Inicio > Historias > COSAS QUE NUNCA TE DIJE, EN R. (1)

2016-06-15

COSAS QUE NUNCA TE DIJE, EN R. (1)

Cuando llevas un tiempo pegándote con esto del Data Science, que es, a decir de los entendidos, lo que yo hago aunque lleve haciéndolo desde casi el siglo pasado, entonces bajo otros nombres, terminas llegando a R.

Y es lógico, pues se trata del lenguaje más útil que puedes aprender si lidias con datos. R está muy arriba, sólo en la cúspide, con el SQL a muy corta distancia, y un poco más atrás Python.

Dedicarse a esto y no conocer SQL y R es como pretender correr una maratón con grilletes en ambos pies. Mejor dedícate a otra cosa. Llegarás tarde, llegarás mal, y llegarás magullado.

Ya hace casi dos años que topé con este maravilloso, potente, fascinante (se me acaban los adjetivos) lenguaje, y no puedo hacer más que recomendarlo.
Al principio con timidez, y en la última época intensivamente, lo uso a diario, y a diario también, me sorprende con cosas nuevas.
A diario. ¿de cuántos lenguajes se puede decir lo mismo?

Como todo nuevo lenguaje, al principio te toca "pelearte" con ciertos comportamientos "extraños", que no vienen sino a ser peculiaridades del propio lenguaje,
y que pronto comienzas a reconocer, como cuando se reconoce a un viejo amigo. Sin embargo, estas pequeñas "peleas" no aparecen en los ejemplos ni en los tutoriales de la web.
Te quitan no pocas horas, pero son cosas tan elementales o al margen del objetivo central de un proyecto que se obvian o no se suelen mencionar y siempre eché de menos que alguien me hubiese echado una mano en esos momentos.

Pues aquí va mi aportación. Esta serie se denomina: "Cosas que nunca te dije. En R"

Lo habitual cuando manipulas tus datos y estás en una fase inicial, es que de todo el set de datos, en un momento dado deseas quedarte con un conjunto reducido.
Esto en R se denomina "subsetting", y es muy habitual.

Imaginemos un pequeño set de datos:

Generamos dos secuencias. Una de letras y otra de números y con ellas componemos el dataframe (objeto tabular básico de R)

df <- data.frame(letters=letters[1:5],numbers=seq(1:5))

 
df
 
letters numbers
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5



Veamos los diferentes Levels de los Factores. Levels viene a ser el equivalente de UNIQUE ó DISTINCT y los Factores son aquellas columnas que almacenan valores categóricos, que pueden ser tanto numeros como cadenas de texto.


levels(df$letters)

[1] "a" "b" "c" "d" "e"


Hacemos un subsetting de las filas cuyo número sea mayor de 3

subdf <- subset(df, numbers <=3)

 
subdf
 
letters numbers
1 a 1
2 b 2
3 c 3

Y ahora viene lo bueno: Volvemos a mirar los Levels
levels(subdf$letters)

[1] "a" "b" "c" "d" "e"

¿¿CÓMO ES POSIBLE QUE SEAN LOS MISMOS ?? si hemos eliminado filas!!
Huelga decir que intentas hacer el subsetting de otras maneras, pero siempre terminas llegando a la misma conclusión: hago algo mal y no sé qué es.

Lo único que ocurre es que R conserva los Levels originales de un factor aunque hagamos subsetting.
Se soluciona habitualmente factorizando de nuevo o con droplevels

# factorizando

subdf$letters <- factor(subdf$letters)
 
# droplevels
subdf$letters <- droplevels(subdf$letters)
 
 
# et voilá
 
levels(subdf$letters)
[1] "a" "b" "c"

Programación | jomaweb | 0 Comentarios | Enlace


Referencias (TrackBacks)

URL de trackback de esta historia http://jomaweb.blogalia.com//trackbacks/76381

Comentarios

Nombre
Correo-e
URL
Dirección IP: 54.92.170.117 (aedfdbd980)
Comentario