我有一个大文件,第一列是ID,其余的1304列是像下面这样的基因型。
rsID sample1 sample2 sample3...sample1304
abcd aa bb nc nc
efgh nc nc nc nc
ijkl aa ab aa nc
我希望能够对每行中 "nc" 值的数量进行计数,并将结果输出到另一列中,从而得到以下结果:
rsID sample1 sample2 sample3...sample1304 no_calls
abcd aa bb nc nc 2
efgh nc nc nc nc 4
ijkl aa ab aa nc 1
表格函数按列计算频率,而不是行。如果我要转置数据以在表格函数中使用,我需要将文件看起来像这样:
abcd aa[sample1]
abcd bb[sample2]
abcd nc[sample3] ...
abcd nc[sample1304]
efgh nc[sample1]
efgh nc[sample2]
efgh nc[sample3] ...
efgh nc[sample1304]
使用这种格式,我可以得到以下输出结果,这正是我想要的:
ID nc aa ab bb
abcd 2 1 0 1
efgh 4 0 0 0
有没有简单的方法可以按行获取频率?我现在正在尝试这个方法,但运行起来需要很长时间:
rsids$Number_of_no_calls <- apply(rsids, 1, function(x) sum(x=="NC"))
rowSums
可能是正确的函数。 - talat