Un marco de datos puede contener columnas que pertenecen a diferentes clases. Una columna de tipo de factor es un conjunto de variables categóricas, cada una asignada a un nivel único. Los niveles nos dan idea de la comorbilidad de la variable de datos entre sí. Estos niveles se pueden modificar tanto cuantitativamente (aumento/disminución) como cualitativamente (modificación de valor) utilizando métodos Base en el Lenguaje de Programación R.
Método 1: Usar el método de niveles()
El métodolevels() en el lenguaje de programación R da acceso al atributo de niveles de una variable. Todos los niveles de la variable se pueden asignar a un valor diferente, incluso a un valor faltante. Como resultado, el mapeo de los niveles cambia y los niveles pueden disminuir, dependiendo del número de asignaciones de niveles a NA. Todas las instancias del nivel asignado como eliminadas de la columna de variables de entrada del marco de datos, así como el factor original.
Sintaxis:
niveles(df$nombre-col)[niveles(df$nombre-col) == val ] <- NA
Ejemplo:
R
# declaring columns of data frame col1 <-as.factor(sample(letters[1:3],15,replace=TRUE)) col2<-sample(5:10,15,replace=TRUE) col3 <- letters[1:15] # creating a data frame data_frame <- data.frame(col1, col2, col3) print ("Original DataFrame") print (data_frame) # getting levels of col1 print ("Levels of col1") levels(data_frame$col1) # if value of column1 is b then replace # by missing value levels(data_frame$col1)[levels(data_frame$col1)=="b"]<-NA print ("Modified DataFrame") print (data_frame) print ("Levels of col1") levels(data_frame$col1)
Producción
[1] "Original DataFrame" col1 col2 col3 1 a 8 a 2 c 10 b 3 c 9 c 4 a 8 d 5 b 8 e 6 b 8 f 7 a 5 g 8 c 9 h 9 b 8 i 10 c 9 j 11 c 8 k 12 c 8 l 13 a 6 m 14 b 10 n 15 c 6 o [1] "Levels of col1" [1] "a" "b" "c" [1] "Modified DataFrame" col1 col2 col3 1 a 8 a 2 c 10 b 3 c 9 c 4 a 8 d 5 <NA> 8 e 6 <NA> 8 f 7 a 5 g 8 c 9 h 9 <NA> 8 i 10 c 9 j 11 c 8 k 12 c 8 l 13 a 6 m 14 <NA> 10 n 15 c 6 o [1] "Levels of col1" [1] "a" "c"
El operador %in% en lenguaje R se utiliza para comprobar la presencia de un valor en un objeto vectorial o de lista. Devuelve un valor lógico dependiendo de si el valor existe.
Sintaxis:
valor %in% vec
Con el operador %in%, se pueden verificar varios valores y también se pueden asignar más de un nivel a NA al mismo tiempo.
Ejemplo:
R
# declaring columns of data frame col1 <-as.factor(sample(letters[1:3],15,replace=TRUE)) col2<-sample(5:10,15,replace=TRUE) col3 <- letters[1:15] # creating a data frame data_frame <- data.frame(col1, col2, col3) print ("Original DataFrame") print (data_frame) # getting levels of col1 print ("Levels of col1") levels(data_frame$col1) vec <- c("a","b") # if value of column1 is b then replace # by missing value levels(data_frame$col1)[levels(data_frame$col1) %in% vec]<-NA print ("Modified DataFrame") print (data_frame) print ("Levels of col1") levels(data_frame$col1)
Producción
[1] "Original DataFrame" col1 col2 col3 1 a 7 a 2 b 5 b 3 b 7 c 4 a 5 d 5 b 5 e 6 a 10 f 7 c 8 g 8 c 5 h 9 a 6 i 10 a 8 j 11 a 5 k 12 b 10 l 13 b 5 m 14 b 6 n 15 c 8 o [1] "Levels of col1" [1] "a" "b" "c" [1] "Modified DataFrame" col1 col2 col3 1 <NA> 7 a 2 <NA> 5 b 3 <NA> 7 c 4 <NA> 5 d 5 <NA> 5 e 6 <NA> 10 f 7 c 8 g 8 c 5 h 9 <NA> 6 i 10 <NA> 8 j 11 <NA> 5 k 12 <NA> 10 l 13 <NA> 5 m 14 <NA> 6 n 15 c 8 o [1] "Levels of col1" [1] "c"
Método 2: Usar el método de indexación
El valor deseado se puede comparar con la columna del marco de datos usando un operador == y luego se pueden eliminar todas sus instancias del marco de datos. Sin embargo, este método es menos eficiente, ya que solo asigna las ocurrencias de la variable a NA en el marco de datos y en realidad no modifica la cantidad de niveles que ya existen.
Sintaxis:
df$nombre-col[df$nombre-col == val] = NA
Ejemplo:
R
# declaring columns of data frame col1 <-as.factor(sample(letters[1:3],15,replace=TRUE)) col2<-sample(5:10,15,replace=TRUE) col3 <- letters[1:15] # creating a data frame data_frame <- data.frame(col1, col2, col3) print ("Original DataFrame") print (data_frame) # getting levels of col1 print ("Levels of col1") levels(data_frame$col1) # if value of column1 is b then replace # by missing value data_frame$col1[data_frame$col1 == "b"] = NA print ("Modified DataFrame") print (data_frame) print ("Levels of col1") levels(data_frame$col1)
Producción
[1] "Original DataFrame" col1 col2 col3 1 c 7 a 2 b 5 b 3 b 6 c 4 c 5 d 5 c 7 e 6 c 10 f 7 b 7 g 8 a 9 h 9 c 9 i 10 a 8 j 11 c 9 k 12 a 10 l 13 a 8 m 14 b 10 n 15 a 7 o [1] "Levels of col1" [1] "a" "b" "c" [1] "Modified DataFrame" col1 col2 col3 1 c 7 a 2 <NA> 5 b 3 <NA> 6 c 4 c 5 d 5 c 7 e 6 c 10 f 7 <NA> 7 g 8 a 9 h 9 c 9 i 10 a 8 j 11 c 9 k 12 a 10 l 13 a 8 m 14 <NA> 10 n 15 a 7 o [1] "Levels of col1" [1] "a" "b" "c"
Publicación traducida automáticamente
Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA