用python和R计算大Pandas重复样本的一致率

2024-06-16 10:53:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件是这样的:(注意:我的实际文件的维数是1000x5000,所以我在这里做了一个简短的版本)

>duplicates

markerid    1A  1B  2A  2B  3A  3B
rs1512      CC  CC  CT  CC  CC  TT
rs1779      TT  TG  TG  TT  --  TG
rs12743     TT  TG  TG  TT  TT  TT
rs13229     CC  GC  CC  --  CC  CC
rs1328      CC  CC  GG  GG  CG  CG

第一列包含了每个人测试的标记ID。随后被测试的个体包含在随后的列中。在

例如,1A和1B是样品1的副本。这同样适用于2A和2B,以及3A和3B

我试图获得每个样本的重复一致率。也就是说,我想知道样本1A的markerid字母与样本1B的markerid字母相同的比例,然后比较样本2A和2B,得到一致率,等等。在

例如,对于样本1A和1B,它们只匹配4/5的markerid。在

我想生成一个格式非常简单的最终输出文件:

^{pr2}$

其中第一行是样本1的符合率,第二行是样本2的符合率,依此类推。在

我认为这样做的方法是计算column2与column3匹配的次数,然后除以任意一列的长度,然后在一个循环中对数据帧中的两个列的后续集合进行循环。但我真的被困在如何正确编码这一点,所以我请求帮助。我正在慢慢地学习编程(用R语言,使用Python中的pandas模块),因此我们将非常感谢您的帮助。谢谢您。在


Tags: 文件版本字母tgcgccduplicates样本
1条回答
网友
1楼 · 发布于 2024-06-16 10:53:27

这就行了。注意,我的数据和你的不完全一样,但是1A和1B在3/5的情况下匹配,2A和2B在4/5的情况下匹配。在

markers = data.frame(
"1A" = c("CC", "TT", "TT", "CC", "CC"),
"1B" = c("CC", "TG", "TT", "CG", "CC"),
"2A" = c("CC", "TT", "TT", "CC", "CC"),
"2B" = c("CC", "TT", "TT", "CC", "CG"),
stringsAsFactors = FALSE
)
#
concordance = sapply(seq(1, ncol(markers), 2), function(c) {
  match = sum(markers[, c] == markers[, c+1]) / nrow(markers)
})
print(concordance)

输出是

^{pr2}$

这应该可以很好地概括为更大的数据集。您可能需要加入一些逻辑来测试数据帧是否有偶数个列。在

相关问题 更多 >