我有两个具有相同行大小和不同列号的数据框,这些列的名称也不同,但是其中一些内容可能相似。
即df1:
df1<- data.frame("a"=c("0","1","0","1","0","0","0"),
"b"=c("1","1","1","1","1","0","0"),
"c"=c("1","1","0","0","1","0","0"),
"d"=c("1","1","1","1","1","1","1"))
df2:
df2<- data.frame("e"=c("1","1","0","1","0","0","0"),
"f"=c("1","1","1","1","1","0","0"),
"g"=c("0","0","0","0","1","0","0"),
"h"=c("0","0","0","0","1","1","1"))
如果看到的话,df1的“ b”列和df2的“ f”列相等。因此,我想要的结果是一个新的数据框,如下所示:
df3 <- data.frame("a"=c("0","1","0","1","0","0","0"),
"c"=c("1","1","0","0","1","0","0"),
"d"=c("1","1","1","1","1","1","1"),
"e"=c("1","1","0","1","0","0","0"),
"g"=c("0","0","0","0","1","0","0"),
"h"=c("0","0","0","0","1","1","1"))
注意:列“ b”和“ f”(相似)不在新的df3中。我在网上看过,但是没有找到一个例子。我认为主要的复杂性是合并是通过内容而不是列名称进行的。
这将完成工作:
df3 <- cbind(df1,df2)
df3 <- t(t(df3)[!(duplicated(t(df3)) | duplicated(t(df3), fromLast = TRUE)),])
df3
# a c d e g h
#1 0 1 1 1 0 0
#2 1 1 1 1 0 0
#3 0 0 1 0 0 0
#4 1 0 1 1 0 0
#5 0 1 1 0 1 1
#6 0 0 1 0 0 1
#7 0 0 1 0 0 1
这会给你一个matrix
,你可以将结果保存为df
如果需要的话
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句