【发布时间】:2015-12-13 15:06:21
【问题描述】:
我有一个大文件,第一列是 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"))
【问题讨论】:
-
R 区分大小写。数据显示“nc”,但应用“NC”...¿?
-
rowSums可能是正确的函数