Encontrar filas presentes en un marco de datos que no están presentes en el otro se conoce como diferencia de conjuntos. En este artículo, veremos diferentes formas de hacer lo mismo.
Método 1: Usar sqldf()
En este método, simplemente se pasa la consulta sql para encontrar la diferencia establecida
Sintaxis:
sqldf(“consulta sql”)
Nuestra consulta será sqldf(‘SELECT * FROM df1 EXCEPT SELECT * FROM df2’). Excluirá todas las filas de df1 que también están presentes en df2 y devolverá solo las filas que solo están presentes en df1.
Ejemplo 1:
R
require(sqldf) df1 <- data.frame(a = 1:5, b=letters[1:5]) df2 <- data.frame(a = 1:3, b=letters[1:3]) print("df1 is ") print(df1) print("df2 is ") print(df2) res <- sqldf('SELECT * FROM df1 EXCEPT SELECT * FROM df2') print("rows from df1 which are not in df2") print(res)
Ejemplo 2:
R
require(sqldf) df1 <- data.frame(name = c("kapil","sachin","rahul"), age=c(23,22,26)) df2 <- data.frame(name = c("kapil"), age = c(23)) print("df1 is ") print(df1) print("df2 is ") print(df2) res <- sqldf('SELECT * FROM df1 EXCEPT SELECT * FROM a2') print("rows from df1 which are not in df2") print(res)
Método 2: Usar setdiff()
Esta es una función integrada de R para encontrar la diferencia establecida de dos marcos de datos.
Sintaxis:
establecer diferencia(df1,df2)
Devolverá filas en df1 que no están presentes en df2.
Ejemplo 1:
R
df1 <- data.frame(a = 1:5, b=letters[1:5], c= c(1,3,5,7,9)) df2 <- data.frame(a = 1:5, b=letters[1:5], c = c(2,4,6,8,10)) print("df1 is ") print(df1) print("df2 is ") print(df2) res <-setdiff(df1, df2) print("rows from df1 which are not in df2") print(res)
Producción:
Ejemplo 2:
R
df1 <- data.frame(name = c("kapil","sachin","rahul"), age=c(23,22,26)) df2 <- data.frame(name = c("kapil","rahul", "sachin"), age = c(23, 22, 26)) print("df1 is ") print(df1) print("df2 is ") print(df2) res <- setdiff(df1, df2) print("rows from df1 which are not in df2") print(res)
Producción:
Publicación traducida automáticamente
Artículo escrito por sachinchhipa44 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA