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