Saltar al contenido

Creando una tabla de datos con R

Una tarea común de manipulación de datos es el rebanado de datos basado en filas y columnas específicas.

Selección de filas

Para extraer una sola fila de datos, podemos usar el conjunto de datos de sintaxis [número de fila]. Por ejemplo, la línea de código de abajo imprime la tercera fila.

Creando una tabla de datos con R
Creando una tabla de datos con R
12d1 = dat[3,] str(d1)

{r}

Salida:

123456789101112Clases "data.table" y "data.frame": 1 obs. de 10 variables: $ Estado_marital : chr "Si" $ Dependientes : int 0 $ Is_graduado : chr "Si" $ Ingresos : int 295100 $ Cantidad_de_préstamo : int 70000 $ Puntuación_de_crédito : chr "Satisfactorio" $ Estado_de_aprobación: int 1 $ Edad : int 71 $ Sexo : chr "M" $ Propósito : chr "Boda" - attr(*, ". internal.selfref")=<externalptr;

El resultado muestra que los datos resultantes tienen una fila y diez observaciones. También es posible extraer una serie de filas. El código que se muestra a continuación extrae las filas tercera a quinta y todas las columnas, y luego las almacena en el nuevo objeto d$0027. La segunda línea imprime la estructura de los nuevos datos: 3 observaciones de 10 variables.

12d1 = dat[3:5,]str(d1)

{r}

Salida:

123456789101112Clases "data.table" y "data.frame": 3 obs. de 10 variables: $ Estado_marital : chr "Sí" "Sí" "Sí" $ Dependientes : int 0 1 2 $ Is_graduado : chr "Sí" "Sí" "Sí" $ Ingresos : int 295100 319300 333300 $ Monto_de_préstamo : int 70000 70000 98000 $ Puntaje_de_crédito : chr "Satisfactorio" "Satisfactorio" "Satisfactorio" $ approval_status: int 1 1 1 $ Edad : int 71 68 64 $ Sexo : chr "M" "M" "M" $ Propósito : chr "Boda" "Boda" "Boda" - attr(*, ". internal.selfref")=<externalptr;

También es posible realizar un filtrado avanzado de filas. Si queremos examinar los registros en los que el historial de crédito del solicitante no era satisfactorio pero el préstamo seguía siendo aprobado, podemos hacerlo utilizando la primera línea de código que aparece a continuación.

La segunda línea imprime la dimensión de los datos resultantes: 38 filas y 10 variables. La tercera línea imprime la tabla de las dos variables. El resultado muestra que hubo 38 solicitantes cuyo puntaje crediticio no fue satisfactorio, pero su solicitud de préstamo fue aprobada.

12345d1 = dat[approval_status == 1 & Credit_score != "Satisfactory"] dim(d1)table(d1$approval_status, d1$Credit_score)

{r}

Salida:

12 No _satisfactorio 1 38

Funciones de ayuda para el subconjunto de datos

La ventaja de utilizar data.table es que proporciona muchas funciones de ayuda para una manipulación eficiente de los datos.

  1. Como..: Esta función nos permite buscar un patrón en un personaje o una variable factorial. Esto se ilustra en las líneas primera a tercera del código que se muestra a continuación, que subconjunto todas las filas donde la variable Purpose comienza con la cadena Personal.
  1. Entre: Esta función nos permite buscar valores dentro del intervalo cerrado. Esto se ilustra en las líneas cuarta a sexta del código que se muestra a continuación, que subconjunto todas las filas donde los ingresos del solicitante se encuentran entre 384.975 dólares (primer cuartil) y 766.100 dólares (tercer cuartil).
  2. …de la China: Esta función es sólo para los vectores de carácter. Esto se ilustra en la séptima a la décima línea de código abajo, que subconjunto todas las filas donde el propósito de la solicitud de préstamo es «Muebles», «Negocios» o «Boda».
123456789101112131415# Líneas 1 - 3: ayudante - %como% d1 = dat[Propósito %como% "^Personal"] dim(d1) tabla(d1$Propósito)# Líneas 4 - 6: helper - %entre% d1 = dat[Ingreso %entre% c(384975, 766100)] dim(d1) summary(d1$Income) # Líneas 7 - 10: helper - %chin% table(dat$Purpose)d1 = dat[Propósito %chin% c("Muebles", "Negocios", "Boda")]dim(d1) table(d1$Purpose)

{r}

Salida:

123456789101112131415161718192021222324# Salida - Líneas 1 - 3 [1] 166 10 Personal 166 # Salida - Líneas 4 - 6 [1] 301 10 Min. 1er Qu. Media Media 3er Qu. Máximo 385200 444400 508400 529978 611100 766100 # Salida - Líneas 7 - 10 Muebles de Educación de Negocios Personal de Viaje Boda 43 191 38 166 123 39 [1] 120 10 Muebles de Negocios Boda 43 38 39

Selección de columnas

Es fácil seleccionar columnas en data.table usando los nombres respectivos. Por ejemplo, la línea de código de abajo extraerá todo el vector de valores de la variable Purpose. La función de resumen confirma que el vector resultante, d1, tiene una longitud de 600 valores.

12d1 = dat[, Propósito]str(d1)

{r}

Salida:

1chr [1:600] "Boda" "Boda" "Boda" "Boda" "Boda" ..

También es posible seleccionar varias columnas utilizando la función list(). La primera línea de código que aparece a continuación selecciona todas las filas y dos columnas especificadas, mientras que la segunda línea imprime la estructura de los datos resultantes.

123d1 = dat[, list(approval_status, Income)]str(d1)

{r}

Salida:

12345 Clases $0027data.table$0027 y $0027data.frame$0027: 600 obs. de 2 variables: $ approval_status: int 1 1 1 1 1 1 1 1 1 1 1 ... $ Ingresos : int 298500 315500 295100 319300 333300 277700 332100 320000 300400 311100 ... - attr(*, ".internal.selfref")=<externalptr;

Hemos aprendido a seleccionar columnas, pero a veces podríamos querer deseleccionar ciertas columnas. Esto se puede hacer usando la función de conveniencia que toma la forma -c(«col1», «col2», …). Como ejemplo, las líneas de código de abajo crean un subconjunto de datos que excluye las variables Sexo y Dependientes. La salida del código confirma esta exclusión.

123d2 <- dat[, -c("Sexo", "Dependientes")] dim(d2)names(d2)

{r}

Salida:

12345[1] 600 8[1] "Estado_marital" "Is_graduado" "Ingresos" "Cantidad_de_préstamo" [5] "Puntuación_de_crédito" "Estado_de_aprobación" "Edad" "Propósito"