使用循环和条件进行矩阵计算

时间:2014-02-26 12:13:50

标签: r

我仍然是R的新手,所以非常感谢您对以下任务的任何帮助。我有一个数据框或由~800行和两列组成的矩阵,“AA”代表蛋白质中的氨基酸位置,“报告”列,其中有突变的数量击中该特定位置。问题在于,由于在同一位置可能存在不同的突变,因此对于相同的位置,我可能有多行,每行具有不同的计数。起始数据是这样的(因为不支持表格,请成对阅读单行,1 5,100 18,102 2等):

AA   Reported
1   5
100 18
102 2
102 13
103 4
103 3
103 2
103 3

我想遍历该表并创建一个新的,只包含每个唯一突变位置的总和。输出应为:

AA  Reported
1   5
100 18
102 15
103 12

很高兴能得到任何帮助。这是学习新知识的好机会。

2 个答案:

答案 0 :(得分:1)

您可以尝试此操作(考虑矩阵M):

aggregate(M$Reported, by=list(M$AA), FUN=sum)
  Group.1  x
1       1  5
2     100 18
3     102 15
4     103 12

答案 1 :(得分:1)

Hello使用aggregate包中的ddplyplyr

x <- read.table(text="AA   Reported
1   5
100 18
102 2
102 13
103 4
103 3
103 2
103 3", header = TRUE)

aggregate( . ~ AA, data=x, sum) 

##   AA Reported
##1   1        5
##2 100       18
##3 102       15
##4 103       12

# or
library(plyr)
ddply(x, .(AA), numcolwise(sum))

##   AA Reported
##1   1        5
##2 100       18
##3 102       15
##4 103       12

但是在stackoverflow上有很多问题和答案...