¿Cómo encontrar la diferencia entre dos marcos de datos en R?

En este artículo, discutiremos cómo encontrar la diferencia entre dos marcos de datos o comparar dos marcos de datos o conjuntos de datos en el lenguaje de programación R. 

Método 1: Usar la función Intersect

La función de intersección en R ayuda a obtener los elementos comunes en los dos conjuntos de datos.

Sintaxis:

intersect(nombres(datos_cortos), nombres(datos_largos))

Ejemplo:

R

first <-
       data.frame(
             "1" = c('0.44','0.554','0.67','0.64'),
             "2" = c('0.124','0.22','0.82','0.994'),
             "3" = c('0.82','1.22','0.73','1.23')
         )
  
second <-
     data.frame(
            "1" = runif(4),
             "2" = runif(4),
             "3" = runif(4),
             "d" = runif(4),
             "e" = runif(4)
         )
  
second[intersect(names(first), names(second))]

Producción:

    1 2 3

1 0,562627228 0,9391250 0,6437934

2 0,003867576 0,7131200 0,9313777

3 0,129852760 0,2657934 0,9291285

4 0,325867139 0,2367633 0,1211350

Método 2: usando setdiff()

Esta función, a diferencia de la intersección, ayuda a ver las columnas que faltan en el primer marco de datos. 

Sintaxis:

setdiff(marco de datos2, marco de datos 1)

Ejemplo:

R

first <-
       data.frame(
             "1" = c('0.44','0.554','0.67','0.64'),
             "2" = c('0.124','0.22','0.82','0.994'),
             "3" = c('0.82','1.22','0.73','1.23')
         )
  
second <-
     data.frame(
            "1" = runif(4),
             "2" = runif(4),
             "3" = runif(4),
             "d" = runif(4),
             "e" = runif(4)
         )
  
second[setdiff(names(second), names(first))]

Producción:

 de

1 0.7899783 0.04363003

2 0,9167861 0,39865991

3 0,3314494 0,13963663

4 0,7005957 0,73401069

Método 3: Usar colnames y dplyr

Seleccionaremos de dplyr para obtener las columnas del marco de datos en las que se realizarán algunas operaciones para obtener la diferencia deseada entre los dos marcos de datos. 

Ejemplo:

R

library("dplyr")
  
first <-
       data.frame(
             "1" = c('0.44','0.554','0.67','0.64'),
             "2" = c('0.124','0.22','0.82','0.994'),
             "3" = c('0.82','1.22','0.73','1.23')
         )
  
second <-
     data.frame(
            "1" = runif(4),
             "2" = runif(4),
             "3" = runif(4),
             "d" = runif(4),
             "e" = runif(4)
         )
  
second%>%select(which(!(colnames(second) %in% colnames(first))))

Producción:

    de

1 0.7899783 0.04363003

2 0,9167861 0,39865991

3 0,3314494 0,13963663

4 0,7005957 0,73401069

Publicación traducida automáticamente

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