比较R中data.frames的元素 [英] Comparing elements of data.frames in R

查看:90
本文介绍了比较R中data.frames的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个数据框

 > a1 
v1 v2 v3
ABCA1 - > GIF
ACTA1 - | CSNK2A1
ACTN4 - | HDAC7
ACTN4 - > RARA

> a2
v1 v2 v3
ACTA1 - | CSNK2A1
ABCD2 - | HDAC7
ABCA1 - | GIF
ACTN4 - >我想要输出,其中 a1 $ element1 == a2 $ element1
$ p $ code>& a1 $ element3 == a2 $ element3 & a1 $ element2!= a2 $ element2 。所以,结果将是:

 > a3 
ABCA1 - > GIF

由于此行中的所有元素都符合我们所有3个条件。在 a1 中的行1和 a2 中的行3。你可以看到( a1 和第3行 a2 ABCA1 == ABCA1 & - > != - | & GIF == GIF

解决方案

您可以尝试合并

  m2<  -  merge(a1,a2,by = c ,v3))
m2 [m2 [,3]!= m2 [,4],] [c(1,3,2)]
#v1 v2.x v3
#1 ABCA1 - > GIF

我们首先在列1和3上合并。这将连接前两个条件的情况。对于最后一个条件,测试列符号不同的情况。



另外, stringsAsFactors 应设置为






使用 data.table ,您可以使用其浅复制效率进行合并。

  setDT(a1)[a2,on = c(v1,v3)] [v2!= i。 v2] 
v1 v2 v3 i.v2
1:ABCA1 - > GIF - |


I have 2 data frames

> a1
v1  v2  v3
ABCA1   --> GIF
ACTA1   --| CSNK2A1
ACTN4   --| HDAC7
ACTN4   --> RARA

> a2
v1  v2  v3
ACTA1   --| CSNK2A1
ABCD2   --| HDAC7
ABCA1   --| GIF
ACTN4   --> XYZ1      

I want output where a1$element1 == a2$element1 & a1$element3 == a2$element3 & a1$element2 != a2$element2. So, the outcome will be:

> a3
ABCA1   --> GIF

As all elements in this row fulfills our all 3 conditions. It is row 1 in a1 and row 3 in a2. As you can see (row 1 of a1 and row 3 of a2) ABCA1 == ABCA1 & --> != --| & GIF == GIF

解决方案

You can try merge:

m2 <- merge(a1, a2, by=c("v1", "v3"))
m2[m2[,3] != m2[,4],][c(1,3,2)]
#     v1 v2.x  v3
#1 ABCA1  --> GIF

We first merge on columns 1 and 3. That will connect the cases of the first two conditions. For the last condition, test for the cases where the column symbols are different.

Also stringsAsFactors should be set to FALSE when creating the data frames.


With data.table, you can merge using its shallow copying efficiency.

setDT(a1)[a2, on = c("v1", "v3")][v2 != i.v2]
      v1  v2  v3 i.v2
1: ABCA1 --> GIF  --|

这篇关于比较R中data.frames的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆