¿Cómo eliminar un subconjunto de un DataFrame en R?

Un subconjunto es una combinación de celdas que forman un marco de datos más pequeño formado a partir del marco de datos original. Se puede eliminar un conjunto de filas y columnas del marco de datos original para reducir una parte del marco de datos. La eliminación de subconjuntos puede basarse en las restricciones a las que están sujetas las filas y las columnas. En este artículo, veremos cómo eliminar un subconjunto de un DataFrame en el lenguaje de programación R.

Método 1: Usando el método anti_join().

El método anti_join() en este paquete se usa para devolver todas las filas del primer marco de datos sin valores coincidentes en y, manteniendo solo las columnas del primer marco de datos. Es básicamente una herramienta de selección y filtrado. Los números de fila del marco de datos original no se conservan en el resultado devuelto. 

Sintaxis: anti_join ( x , y , por = c(..))

Argumentos: 

  • x : El primer marco de datos
  • y : El segundo marco de datos
  • por (Opcional): Para considerar qué columna como la clave para filtrar datos.

Devoluciones: Las primeras filas del marco de datos que no están en el segundo marco de datos. 

Código:

R

# loading the library
library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
  
print ("Original Dataframe")
print (data_frame)
  
# creating subset dataframe
subset <- data.frame(col1 = c(2 , 6),
                     col2 = c(4 , 8))
  
# removing subset data frame
data_frame_mod <- anti_join(data_frame,subset)
print ("Modified Dataframe")
print (data_frame_mod)

Producción:

[1] "Original Dataframe" 
col1 col2 col3 col4 
1    2    4    8    a 
2    4    6   10    b 
3    6    8   12    c 
4   10    5   20    d 
[1] "Modified Dataframe" 
col1 col2 col3 col4 
1    4    6   10    b 
2   10    5   20    d

En caso de que las columnas del segundo marco de datos pertenezcan a filas diferentes del primer marco de datos, podemos especificar los valores de columna a tomar, usando el argumento «by» en el método anti_join(). 

R

library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
print ("Original Dataframe")
print (data_frame)
subset <- data.frame(col1 = c(2 , 4),
                     col4 = c("a" , "d") )
data_frame_mod <- anti_join(data_frame,
                            subset, by = "col4")
print ("Modified Dataframe")
print (data_frame_mod)

Producción:

[1] "Original Dataframe" 
col1 col2 col3 col4 
1    2    4    8    a 
2    4    6   10    b 
3    6    8   12    c 
4   10    5   20    d 
[1] "Modified Dataframe" 
col1 col2 col3 col4 
1    4    6   10    b 
2    6    8   12    c 

Método 2: Usar el operador %in%

El operador %in% se utiliza para verificar la existencia de un valor en el vector. Devuelve un valor lógico, en caso de que el valor esté presente, de lo contrario, es falso. 

val %in% vec

La columna particular del primer marco de datos se verifica en busca de valores en el segundo marco de datos, y se devuelven las filas que no están presentes en el segundo marco de datos. Los números de fila del marco de datos original se conservan durante la aplicación de este operador. 

R

library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
  
print ("Original Dataframe")
print (data_frame)
  
# creating second data frame
subset <- data.frame(col1 = c(2 , 4),
                     col2 = c("a" , "d"))
data_frame_mod <- data_frame[data_frame$col4 %in% subset$col2, ]
print ("Modified Dataframe")
print (data_frame_mod)

Producción:

[1] "Original Dataframe"
  col1 col2 col3 col4
1    2    4    8    a
2    4    6   10    b
3    6    8   12    c
4   10    5   20    d
[1] "Modified Dataframe"
  col1 col2 col3 col4
2   4    6   10    b
3   6    8   12    c 

Publicación traducida automáticamente

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