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

标签 r compare

我有两个数据集(A 和 B),一个包含 1600 个观测值/行和 1002 个变量/列,另一个包含 860 个观测值/行和 1040 个变量/列。我想快速检查哪些变量不包含在数据集 A 中但包含在数据集 B 中,反之亦然。我只对列名称感兴趣,而不对这些列中包含的观察感兴趣。
我在这里发现了这个很棒的功能:https://cran.r-project.org/web/packages/arsenal/vignettes/comparedf.html本质上我想要得到类似于这样的输出:
Variables not shared output
我正在尝试的代码是:
摘要(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

这将按 ID 返回未共享的行。

编辑

如果您想查找哪些列名称/变量出现在一个数据框中而不是另一个数据框中,那么您可以使用此解决方案:-

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

我希望这能回答您的问题。它将返回每个非共享列/变量下的实际值,但您可以将输出保存到一个对象并对其运行 colnames() ,这应该打印您的非共享列/变量名称。

关于r - 如何显示 R 中两个数据集不共享哪些变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64029649/

相关文章:

R:如何更改列表对象的字符编码

r - dplyr 中的列函数在 group_by 后发生变异,但没有给出正确的分组结果

r - scale_x_date 删除轴上的额外月份(ggplot2 2.2.0.9)

r - 从较小的矩阵创建一个更大的矩阵

php - 比较两个整数

r - 每小时在 R 中保存一个文件

java - Android按钮比较

c# - 排序 C++ vector 和 C# 列表

c++ - 在两个文本文件中搜索词 C++

php - 如何比较两个非常大的字符串