2015-07-21 35 views
-2

比较两个类似的表数据点之间的区别我有一个表(DF1),看起来像这样:如何通过数据点中的R

I   id col.3 col.4 col.5 col.6 col.7 col.8 
M Chr18_1369  G  G  T  G  G  G 
M Chr18_54979  G  N  A  N  G  G 
M Chr18_187626  C  T  N  T  C  C 
M Chr18_196254  C  C  G  C  N  G 
M Chr18_224569  A  A  C  N  C  C 
M Chr18_275670  T  T  C  C  T  T 

有由“N”在DF1代表的一些丢失的数据点。在填补之后,丢失的数据“N”将被一个字母替换。输出是DF2为:

I   id col.3 col.4 col.5 col.6 col.7 col.8 
M Chr18_1369  G  G  T  G  G  G 
M Chr18_54979  G  G  A  G  G  G 
M Chr18_187626  C  T  T  T  C  C 
M Chr18_196254  C  C  G  C  C  G 
M Chr18_224569  A  A  C  A  C  C 
M Chr18_275670  T  T  C  C  T  T 

我有另一个数据帧(DF3)

I   id col.3 col.4 col.5 col.6 col.7 col.8 
M Chr18_1369  G  G  T  G  G  G 
M Chr18_54979  G  G  A  A  G  G 
M Chr18_187626  C  T  C  T  C  C 
M Chr18_196254  C  C  G  C  C  G 
M Chr18_224569  A  A  C  C  C  C 
M Chr18_275670  T  T  C  C  T  T 

所述DF3具有相同的结构DF2但一些字符值可以是在缺少数据的相应位置不同的“d”中的“N”。例如,df2 [2,6] ==“G”,但df3 [2,6] ==“A”和df2 [3,5] ==“T”,df3 [3,5] ==“ C“... 我想计算df2和df3之间的差异率。公式是:

U <- length(which(df1 =="N", arr.ind=TRUE)) 
Diff = length(difference(df2,df3))/U 

我不知道如何获得长度(差异(df2,df3))。我需要一个优雅的脚本来完成这项任务。先谢谢你。

回答

2

sum(df2 == df3)

不起作用?

+0

或者,作为一个比例,总和(df3 == df2)/ prod(dim(df2))'。它的工作原理是 – ulfelder

+0

。谢谢 – user3354212

+0

这个任务的脚本:U < - which(df1 ==“N”,arr.ind = TRUE);精度< - sum(df2 [U] == df3 [U])/ length(U) – user3354212