Eliminar filas con celdas vacías en R

Un marco de datos puede contener elementos pertenecientes a diferentes tipos de datos como celdas. Sin embargo, puede contener filas en blanco o filas que contengan valores faltantes en todas las columnas. Estas filas son equivalentes a registros ficticios y se denominan filas vacías. Hay varias formas de eliminarlos. 

Método 1: Eliminar filas usando for loop

Se declara un vector para mantener los índices de todas las filas que contienen todos los valores en blanco. Se realiza una iteración de bucle for sobre las filas del marco de datos. Un contador se establece en 0 para almacenar todos los valores en blanco en cada fila. Otra iteración se realiza a través de columnas. El valor de la celda se compara con el valor en blanco y, si cumple la condición, se incrementa el contador. Después de cada iteración del bucle interno, el valor del contador se compara con el número de columnas en el marco de datos. Si estos valores son equivalentes, el índice de fila se agrega al vector. Después del final del ciclo externo, los índices de fila almacenados en el vector se eliminan usando el ‘-‘ delante del vector de índice de fila. 

La complejidad temporal de este enfoque es O(m *n ), donde m es el número de filas y n es el número de columnas.

Ejemplo:

R

# declaring a dataframe
data_frame = data.frame(col1 = c("","b","","","e") , 
                        col2 = c("",2,"",4,5), 
                        col3= c("",FALSE,"","", TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# declaring an empty vector to store 
# the rows with all the blank values
vec <- c()
  
# looping the rows
for (i in 1:nrow(data_frame)){
    
    # counter for blank values in 
    # each row
    count = 0
      
    # looping through columns
    for(j in 1:ncol(data_frame)){
      
        # checking if the value is blank
        if(isTRUE(data_frame[i,j] == "")){
            count = count + 1
        }
          
    }
    
    # if count is equivalent to number 
    # of columns
    if(count == ncol(data_frame)){
      
          # append row number
        vec <- append(vec,i)
    }
}
  
# deleting rows using index in vector
data_frame_mod <- data_frame[-vec, ] 
print ("Modified dataframe")
print (data_frame_mod)

Producción

[1] "Original dataframe"
 col1 col2  col3
1                
2    b    2 FALSE
3                
4         4      
5    e    5  TRUE
[1] "Modified dataframe"
 col1 col2  col3
2    b    2 FALSE
4         4      
5    e    5  TRUE

Método 2: eliminar filas con todas las celdas en blanco en R usando el método de aplicación

El método apply() en R se usa para aplicar una función específica sobre el objeto R, el vector, el marco de datos o una array. Este método devuelve un vector o arreglo o lista de valores obtenidos al aplicar la función al correspondiente de un arreglo o array.

Sintaxis: apply(df , eje, FUN, …)

Parámetro:

df – Un marco de datos o array

eje: el eje sobre el que se aplica la función. Para un marco de datos, 1 indica filas, 2 indica columnas y c(1, 2) indica filas y columnas.

FUN – La función que se va a aplicar.

La restricción a la que está sujeto el marco de datos es verificar que los valores de las celdas no sean «», es decir, en blanco. En este enfoque, FUN es equivalente a ‘todos’, ya que todas las columnas de cualquier fila en particular deben cumplir la condición de no tener un valor de celda en blanco. 

Ejemplo:

R

# declaring an empty dataframe
data_frame = data.frame(col1 = c("","b","","","e") , 
                        col2 = c("",2,"",4,5), 
                        col3= c("",FALSE,"","", TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking where the cells are not all empty
data_frame_mod <- data_frame[!apply(data_frame == "", 1, all), ]  
print ("Modified dataframe")
print (data_frame_mod )

Producción

[1] "Original dataframe"
 col1 col2  col3
1                
2    b    2 FALSE
3                
4         4      
5    e    5  TRUE
[1] "Modified dataframe"
 col1 col2  col3
2    b    2 FALSE
4         4      
5    e    5  TRUE

Método 3: Eliminación de filas con todo NA 

Un marco de datos puede consistir en valores faltantes o NA contenidos en el reemplazo de los valores de celda. Este enfoque utiliza muchos métodos R incorporados para eliminar todas las filas con NA. 

  • El número de columnas del marco de datos se puede verificar usando el método ncol() .

Sintaxis:

ncol(df)

  • Los valores de las celdas individuales se comprueban si los valores son NA o no, utilizando el método is.na(). El marco de datos se pasa como argumento a este método. Devuelve un marco de datos con dimensiones equivalentes al marco de datos original. Consta de valores lógicos, VERDADERO si el valor es NA, FALSO en caso contrario.

Sintaxis:

na_df <- es.na(df)

  • El método rowSums() se aplica sobre el marco de datos que consta de valores lógicos obtenidos del paso anterior. Devuelve el recuento de la suma total de los valores NA encontrados en cada fila. El vector resultante contiene el número entero que denota una cantidad de valores faltantes de cada fila.

Sintaxis:

filas sumas (na_df)

  • Las filas donde la suma de las filas de na valores de cada fila no es equivalente al número de columnas, esas filas se almacenan en una variable separada como salida. Si los dos son iguales, implica que todas las columnas contienen NA en esa fila específica.

Ejemplo:

R

# declaring an empty dataframe
data_frame = data.frame(col1 = c(NA,"b",NA,NA,"e") , 
                        col2 = c(NA,2,NA,4,5), 
                        col3= c(NA,FALSE,NA,NA, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking number of columns
cols <- ncol(data_frame)
  
# checking for which elements have 
# missing values
is_na <- is.na(data_frame)
  
# computes total number of nas 
# encountered in each row
row_na <- rowSums(is_na)
  
# checking where the cells are not 
# all NA
data_frame_mod <- data_frame[row_na != cols, ]  
print ("Modified dataframe")
print (data_frame_mod )

Producción

[1] "Original dataframe"
 col1 col2  col3
1 <NA>   NA    NA
2    b    2 FALSE
3 <NA>   NA    NA
4 <NA>    4    NA
5    e    5  TRUE
[1] "Modified dataframe"
 col1 col2  col3
2    b    2 FALSE
4 <NA>    4    NA
5    e    5  TRUE

Publicación traducida automáticamente

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