我仍然是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
很高兴能得到任何帮助。这是学习新知识的好机会。
答案 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
包中的ddply
或plyr
:
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上有很多问题和答案...