El problema del factor en un marco de datos en la programación R

Los DataFrames son objetos de datos genéricos de R que se utilizan para almacenar los datos tabulares. Los marcos de datos se consideran los objetos de datos más populares en la programación R porque es más cómodo analizar los datos en forma tabular. Los marcos de datos también se pueden enseñar como arrays donde cada columna de una array puede ser de diferentes tipos de datos.

Problema de factor en un marco de datos en R

R tiene las características incorporadas para asignar los tipos de datos a los datos que ingresa. Cuando ingresa variables numéricas, conoce todas las variables numéricas que están disponibles, pero cuando ingresa variables de caracteres, toma las variables de caracteres que está dando como categorías o niveles de factores. Y asume que estos son los únicos factores que están disponibles por ahora. Las variables de factor son aquellas en las que la columna de caracteres se divide en categorías o niveles de factor. Así que vamos a entender esto a través de un ejemplo. En el código R a continuación, se proporciona un marco de datos y queremos manipular el marco de datos y observar cuál es el problema que realmente ocurre aquí.

Ejemplo:

# R program to illustrate
# the factor issue in a data frame
  
# Creating a dataframe 
df = data.frame( 
  "Name" = c("Amiya", "Raj", "Asish"), 
  "Language" = c("R", "Python", "Java"), 
  "Age" = c(22, 25, 45) 
) 
print(df) 
  
# Manipulating the data frame
df[1, 3] = 37
df[3, 2] = "C"
  
print(df)

Producción:

Name Language Age
1 Amiya        R  22
2   Raj   Python  25
3 Asish     Java  45

   Name Language Age
1 Amiya        R  37
2   Raj   Python  25
3 Asish     NA    45
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C") :
  invalid factor level, NA generated

Al principio, cuando desea cambiar el elemento en la tercera columna de la primera fila a otros, las operaciones se realizaron con éxito aunque era una variable numérica. Pero cuando desea cambiar el elemento en la segunda columna de la tercera fila a otros; lo que sucede es que mostrará un mensaje de advertencia que dice que esta variable categórica «C» no está disponible y la reemplaza con NA. Puede notar que el lugar donde queremos que esté «C» tenemos un NA y también podemos ver el uso de la palabra factor en el mensaje de advertencia, la pregunta ahora es cómo deshacerse del problema del factor.

Resolviendo el problema del factor

Las nuevas entradas en R cuando ingresa deben ser consistentes con los niveles de factor que ya están definidos y, de lo contrario, se imprimirán esos mensajes de error. Si no desea que suceda este problema, lo que debe hacer es definir el marco de datos en sí, debe pasar otro argumento, que dice que «strings como factores» es falso. De forma predeterminada, este argumento es verdadero, esa es la razón por la que recibe este mensaje de advertencia cuando desea cambiar los caracteres de string en nuevos caracteres de string como un elemento. Ahora intente hacer la misma manipulación que desea cambiar.

Ejemplo:

# R program to illustrate
# resolving the factor issue in a data frame
  
# Creating a dataframe 
df = data.frame( 
  "Name" = c("Amiya", "Raj", "Asish"), 
  "Language" = c("R", "Python", "Java"), 
  "Age" = c(22, 25, 45),
  # Passing an additional argument 
  # to resolve factor issue
  stringsAsFactors = F
) 
print(df) 
  
# Manipulating the data frame
df[1, 3] = 37
df[3, 2] = "C"
  
print(df)

Producción:

Name Language Age
1 Amiya        R  22
2   Raj   Python  25
3 Asish     Java  45

   Name Language Age
1 Amiya        R  37
2   Raj   Python  25
3 Asish        C  45

En el código anterior, puede ver que ya no hay NA y logramos lo que queríamos.

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout 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 *