报告 R 中两个数据框之间的差异

fai*_*lay 4 compare r dataframe difference

我有两个从 csv 文件加载的数据框。基本上来自不同的环境但格式/列相似,它们的行/值可能有所不同。我想找到差异并在新的数据框中创建它们。两个数据框也将具有相同的顺序。我有 100 个要比较的文件。提前致谢。

数据框 1:df1test

product | country | partner | value
------------------------------------
prdct1  |  china  | part1   | ["563,45"]
prdct2  |  UK     | part4   | ["52,455"]
prdct3  |  USA    | part2   | ["563,45"]
prdct4  |  ITALY  | part6   | ["674,45"]
prdct5  |  UK     | part7   | ["563,578"]
Run Code Online (Sandbox Code Playgroud)

数据框2:df1prod

product | country | partner | value
------------------------------------
prdct1  |  china  | part1   | ["563,45"]
prdct2  |  UK     | part4   | ["247,455"]
prdct3  |  USA    | part41  | ["563,45"]
prdct4  |  UK     | part6   | ["0,45"]
Run Code Online (Sandbox Code Playgroud)

我想显示第三个数据框中的差异

数据框 3:dfDifference

Env:test                             Env:prod    
product| country|partner| value      product| country | partner | value
------------------------------------ -----------------------------------
prdct2 | UK     |part4 | ["52,455"]  prdct2 |UK |part4  | ["247,455"]
prdct3 | USA    |part2 | ["563,45"]  prdct3 |USA|part41 | ["563,45"]
prdct4 | ITALY  |part6 | ["674,45"]  prdct4 |UK |part6  | ["0,45"]
prdct5 | UK     |part7 | ["563,578"] Not Available
Run Code Online (Sandbox Code Playgroud)

我尝试了以下功能和方法但没有锻炼

Compare function
    comptest<-compare(df1test,df1prod,allowAll = TRUE)

Variable combine
    df1test$Varcomp <- apply(df1test,1,paste,collapse=';')
    df1prod$Varcomp <- apply(df1prod,1,paste,collapse=';')
    aabb<-sapply(df1prod$Varcomp,FUN = function(x){x==df1test$Varcomp})
Run Code Online (Sandbox Code Playgroud)

小智 5

一个很好的方法是setdiff()函数,它将两个数据帧作为参数。

newdata <- setdiff(df1, df2)
Run Code Online (Sandbox Code Playgroud)