Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示R中的两个数据集不共享哪些变量?_R_Compare - Fatal编程技术网

如何显示R中的两个数据集不共享哪些变量?

如何显示R中的两个数据集不共享哪些变量?,r,compare,R,Compare,我有两个数据集(A和B),一个有1600个观察值/行和1002个变量/列,另一个有860个观察值/行和1040个变量/列。我想快速检查哪些变量不包含在数据集A中,而包含在数据集B中,反之亦然。我只对列名感兴趣,对这些列中包含的条款不感兴趣。 我在这里发现了这个很棒的函数:本质上,我希望得到类似的输出: 我正在尝试的代码是:summary(comparedf(dataA,dataB))但是,不打印表,因为R对两个数据集进行逐行比较,然后在控制台中打印结果时空间不足。有没有一种快速的方法可以满足我的

我有两个数据集(A和B),一个有1600个观察值/行和1002个变量/列,另一个有860个观察值/行和1040个变量/列。我想快速检查哪些变量不包含在数据集A中,而包含在数据集B中,反之亦然。我只对列名感兴趣,对这些列中包含的条款不感兴趣。
我在这里发现了这个很棒的函数:本质上,我希望得到类似的输出:


我正在尝试的代码是:
summary(comparedf(dataA,dataB))

但是,不打印表,因为R对两个数据集进行逐行比较,然后在控制台中打印结果时空间不足。有没有一种快速的方法可以满足我的需要?

我认为您可以使用
dplyr
包中的
anti_join()
函数来查找不匹配的记录。它将为您提供数据集A和B不共享的行的输出。以下是一个例子:-

table1<-data.frame(id=c(1:5), animal=c("cat", "dog", "parakeet", 
                                       "lion", "duck"))

table2<-table1[c(1,3,5),]

library(dplyr)
anti_join(table1, table2, by="id")

  id animal
1  2    dog
2  4   lion


table1可能有点笨重,但将
setdiff()
colnames()
结合起来可能会奏效。
同时执行
setdiff(colnames(DataA)、colnames(DataB))
setdiff(colnames(DataB)、colnames(DataA))
将为您提供两个向量,每个向量的列名出现在其中一个数据集中,但不在另一个数据集中。

嗨,罗宾,感谢您抽出时间。数据集部分共享相同的变量名,但观测值是独立的,因此没有像ID那样的公共分母可以配对。此外,我不是在寻找行的差异,而是在寻找列的差异。两个数据帧之间的列名差异?我想我有办法了,我会修正我的答案的。这也非常有效!谢谢。@Anca没问题,很乐意帮忙!如果你不介意对我的解决方案投赞成票,那就太好了:)非常有魅力,谢谢。你帮我省了几个小时的工作,安东。
df1 <- data.frame(a=rnorm(100), b=rnorm(100), not=rnorm(100))
df2 <- data.frame(a=rnorm(100), b=rnorm(100))

df1[, !names(df1) %in% names(df2)] #returns column/variable that appears in df1 but not in df2