如何解决如何显示R中的两个数据集不共享哪些变量?
我有两个数据集(A和B),一个具有1600个观测值/行和1002个变量/列,一个具有860个观测值/行和1040个变量/列。我想快速检查哪些变量不包含在数据集A中,而是包含在数据集B中,反之亦然。我只对列名感兴趣,而不对这些列中包含的内容感兴趣。
我在这里找到了一个很棒的功能:https://cran.r-project.org/web/packages/arsenal/vignettes/comparedf.html,从本质上讲,我希望得到类似以下的输出:
我正在尝试的代码是: summary(comparedf(dataA,dataB))
但是,由于R对两个数据集进行了逐行比较,因此未打印表。在控制台中打印结果时空间不足。在这里可以快速实现我的需求吗?
解决方法
我认为您可以使用anti_join()
包中的dplyr
函数来查找不匹配的记录。它将为您提供数据集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()
,这将打印您未共享的列/变量名称。
这可能有些笨拙,但是将setdiff()
与colnames()
结合使用可能有效。
同时执行setdiff(colnames(DataA),colnames(DataB))
和setdiff(colnames(DataB),colnames(DataA))
将为您提供2个向量,每个向量都具有一个数据集中的列名,而另一个数据集中没有。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。