如何比较两个表的值?

sta*_*tar 3 compare r dataframe

我有两个数据框如下,我想比较这些表的值(基于相同的行和列)和指定相同的值与TRUE否则与FALSE.

data1:

      id              A               B              C
      m1              2               2              2
      m2              2               1              2

data2:

      id              A               D              B
      m1              1               2              2
      m2              2               3              2


Output:

      id                  A             B
      m1              FALSE          TRUE
      m2              TRUE          FALSE
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

创建两个数据集中常见的列名索引,根据该数据集对数据集进行子集并执行比较(==)

nm1 <- intersect(names(data1), names(data2))
cbind(data1[1], data1[nm1][-1]==data2[nm1][-1])
#   id     A     B
#1 m1 FALSE  TRUE
#2 m2  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)


aic*_*hao 5

您可以merge后这两个数据帧melt荷兰国际集团通过id找到相交列.然后生成一个具有值的相等条件的新列.最后dcast回到输出表的宽格式:

library(reshape2)
df1 <- melt(data1,"id")
df2 <- melt(data2,"id")
df3 <- merge(df1,df2,by=c("id","variable"))
df3$value <- df3$value.x == df3$value.y
result <- dcast(df3, id~variable)
##id     A     B
##1 m1 FALSE  TRUE
##2 m2  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)