Convertir clases de columna de tabla de datos en R

El paquete data.table se utiliza para facilitar las operaciones de manipulación de datos, como las operaciones de subconfiguración, agrupación y actualización de la tabla de datos en el lenguaje de programación R. 

El método sapply() en el lenguaje de programación R se usa para aplicar una función sobre el objeto R especificado, un marco de datos o una array. Si especificamos FUN = “clase”, se devuelve el tipo de datos de cada una de las columnas de la tabla de datos. 

Sintaxis:

sapply (tabla de datos, DIVERSIÓN)

El tipo de datos de la columna particular en lenguaje R se puede cambiar a la clase requerida, mediante conversión explícita. El resultado debe almacenarse en una variable diferente para preservarlo. 

Sintaxis:

data.table [ , nombre-col := conv-func(nombre-col) ]

En esta sintaxis, conv-func ilustra la función de conversión explícita que se aplicará a la columna en particular. Por ejemplo, es as.character() para la conversión de caracteres, as.numeric() para la conversión numérica y as.factor() para la conversión de variables de tipo factor.

Ejemplo:

R

library(data.table)
  
# creating a data frame
data_table <- data.table(col1 = c(1:5),
                         col2 = letters[1:5],
                         col3 = factor(sample(5:10)))
  
print ("Original DataTable")
print (data_table)
  
# getting class of columns
sapply(data_table , class)
  
# convert column into character
data_table_mod <- data_table[ , col3 := as.character(col3)]
  
print ("Modified DataTable")
print (data_table_mod)
sapply(data_table_mod , class)

Producción

[1] "Original DataTable" 
   col1 col2 col3 
1:    1    a    5 
2:    2    b    8 
3:    3    c    7 
4:    4    d    6 
5:    5    e    9 
6:    1    a   10 
col1        col2        col3    
"integer" "character"    "factor"  
[1] "Modified DataTable" 
   col1 col2 col3 
1:    1    a    5 
2:    2    b    8
3:    3    c    7 
4:    4    d    6 
5:    5    e    9 
6:    1    a   10 
col1        col2        col3    
"integer" "character" "character" 

Sin embargo, la conversión del factor de carácter a numérico solo se puede simular si la columna en particular se puede convertir a forma numérica. En el siguiente código, cuando col2 de la tabla de datos se convierte a formato integral usando as.numeric(), los datos se pierden y se reemplazan por valores perdidos.

Ejemplo:

R

library(data.table)
  
# creating a data frame
data_table <- data.table(col1 = c(1:5),
                         col2 = letters[1:5],
                         col3 = factor(sample(5:10)))
  
print ("Original DataTable")
print (data_table)
  
# getting class of columns
sapply(data_table , class)
  
# convert column into character
data_table_mod <- data_table[ , col2 := as.numeric(col2)]
  
print ("Modified DataTable")
print (data_table_mod)
sapply(data_table_mod , class)

Producción

[1] "Original DataTable" 
    col1 col2 col3 
1:    1    a   10 
2:    2    b    6 
3:    3    c    5 
4:    4    d    9 
5:    5    e    7 
6:    1    a    8       
col1        col2        col3    
"integer" "character"    "factor"  
[1] "Modified DataTable" 
   col1 col2 col3 
1:    1   NA   10 
2:    2   NA    6 
3:    3   NA    5 
4:    4   NA    9 
5:    5   NA    7 
6:    1   NA    8 
col1      col2      col3  
"integer" "numeric"  "factor" 

El método lapply() en lenguaje R se utiliza para aplicar una función definida por el usuario sobre todos los componentes del marco de datos proporcionado o del objeto de la tabla de datos. Se utiliza principalmente para listas anidadas.

Sintaxis: 

lapply( obj , DIVERSIÓN)

Parámetro:

obj : un objeto para aplicar la conversión

FUN: Función aplicada a cada elemento del objeto suministrado

La siguiente sintaxis se puede utilizar para la conversión similar de las columnas especificadas en el formato de tipo de factor. Esta implementación se usa para actualizar las columnas por referencia usando `:=`, por ejemplo, DT[, nombres(DT) := lapply(.SD, as.factor)], es decir, no crea ninguna copia de su datos. Dado que los factores son variables categóricas que se pueden usar para almacenar tanto números enteros como caracteres, no hay pérdida ni ambigüedad en la recuperación de datos. 

Ejemplo:

R

library(data.table)
  
# creating a data frame
data_table <- data.table(col1 = c(1:5),
                         col2 = letters[1:5],
                         col3 = factor(sample(5:10)))
  
print ("Original DataTable")
print (data_table)
  
# getting class of columns
sapply(data_table , class)
  
# convert column into factor type
cols <- c("col1","col2")
  
# Change class of certain columns
data_table_mod <- data_table[ ,                        
                             (cols) := lapply(.SD, as.factor),
                             .SDcols = cols]
  
print ("Modified DataTable")
print (data_table_mod)
sapply(data_table_mod , class)

Producción

[1] "Original DataTable"
  col1 col2 col3
1:    1    a    5
2:    2    b    8
3:    3    c    7
4:    4    d    6
5:    5    e    9
6:    1    a   10
col1        col2        col3    
"integer" "character"    "factor"  
[1] "Modified DataTable"
  col1 col2 col3
1:    1    a    5
2:    2    b    8
3:    3    c    7
4:    4    d    6
5:    5    e    9
6:    1    a   10
col1        col2        col3    
"factor" "factor" "factor"

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *