在不同的数据框中选择丢失的行

如何解决在不同的数据框中选择丢失的行

我有两个数据帧:list1list2

>head(list1)
       RS_ID CHROM       POS REF_ALLELE ALT_ALLELE AF_REF_allsamples
1 rs77599058     1 195680131          C          T            0.9996
2 rs73056353     1 195680971          A          G            0.9999
3 rs12130880     1 195681419          A          T            0.5475
4 rs76457267     1 195681460          A          C            0.9993
5 rs10921893     1 195681616          T          C            0.5060
6 rs75239769     1 195682022          G          A            0.9999
  AF_ALT_allsamples AF_REF_onlycontrol AF_ALT_onlycontrol pvalues
1            0.0004             0.9996             0.0004  0.7830
2            0.0001             0.9998             0.0002  0.3740
3            0.4525             0.5442             0.4558  0.0597
4            0.0007             0.9992             0.0008  0.3590
5            0.4940             0.5099             0.4901  0.0302
6            0.0001             1.0000             0.0000  0.5500
>head(list2)
       RS_ID CHROM       POS REF_ALLELE ALT_ALLELE AF_REF_allsamples
1 rs77599058     1 195680131          C          T            0.9996
2 rs73056353     1 195680971          A          G            0.9999
3 rs12130880     1 195681419          A          T            0.5475
4 rs76457267     1 195681460          A          C            0.9993
5 rs10921893     1 195681616          T          C            0.5060
6 rs75239769     1 195682022          G          A            0.9999
  AF_ALT_allsamples AF_REF_onlycontrol AF_ALT_onlycontrol pvalues
1            0.0004             0.9996             0.0004  0.7830
2            0.0001             0.9998             0.0002  0.3740
3            0.4525             0.5442             0.4558  0.0597
4            0.0007             0.9992             0.0008  0.3590
5            0.4940             0.5099             0.4901  0.0302
6            0.0001             1.0000             0.0000  0.5500
> dim(list1)
[1] 235111     10
> dim(list2)
[1] 234520     10

正如您在dim()上看到的那样,它们的行数相差591。我现在想获取一个新的数据框,其中包含list1中所有不在list2中的行(那些591)

我尝试过

> match_diff=list1[!(list1 %in% list2)]
> dim(match_diff)
[1] 235111     10

但是您可以看到它告诉我,list1的所有行都与list2不同。

我用str()检查了是否有根本原因,但是两者是相同的(源自相同的原始数据)

我无法按单个列进行检查,但必须将每一行作为一个整体进行比较。

解决方法

这是数据库join的操作。如果您搜索联接,则会在此处找到有关不同种类的更多信息。正如@starja所说,您要从dplyr获得anti_join

如果尚未安装dplyr,请安装install.packages('dplyr')

R> list1 <- data.frame(a=0:5,b=10:15)
R> list2 <- data.frame(a=(0:5)+3,b=(10:15)+3)
R> list1
  a  b
1 0 10
2 1 11
3 2 12
4 3 13
5 4 14
6 5 15
R> list2
  a  b
1 3 13
2 4 14
3 5 15
4 6 16
5 7 17
6 8 18
R> list3 <- dplyr::anti_join(list1,list2)
Joining,by = c("a","b")
R> list3
  a  b
1 0 10
2 1 11
3 2 12
R> 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?