首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图在R中的数据的子群中对探测计数进行求和。

我试图在R中的数据的子群中对探测计数进行求和。
EN

Stack Overflow用户
提问于 2015-05-12 00:31:15
回答 1查看 37关注 0票数 0

我是一名生物化学专业的学生,研究乳腺癌数据(拷贝号码探针)。我有以下原发性乳腺肿瘤的数据框架:

代码语言:javascript
复制
Patient   Chrom   Start    End       ProbeCount
1         1       51599    62640     8
1         1       88466    16022503  8676
1         2       2785     285255    186
1         2       290880   4178544   2903
...
2         1       51599    4098530   1282
2         1       4101675  46753618  25229
2         2       2785     36178040  25931
2         2       36185342 36192717  21
...

我想添加第五列,在该列中,我可以为每个患者的每个Chrom添加ProbeCounts总数:

代码语言:javascript
复制
Patient   Chrom   Start    End       ProbeCount   Total
1         1       51599    62640     8            8684
1         1       88466    16022503  8676         8684
1         2       2785     285255    186          3089
1         2       290880   4178544   2903         3089
...
2         1       51599    4098530   1282         26511
2         1       4101675  46753618  25229        26511
2         2       2785     36178040  25931        25952
2         2       36185342 36192717  21           25952
...

这必须有一个简单的函数。集合体?如果有人能给我一个提示,我会非常感激的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 00:40:12

使用dplyr包的一种方法是如下所示。您的数据框架称为mydf

代码语言:javascript
复制
library(dplyr)
group_by(mydf, Patient, Chrom) %>%
mutate(whatever = sum(ProbeCount))

#Source: local data frame [8 x 6]
#Groups: Patient, Chrom
#
#  Patient Chrom    Start      End ProbeCount whatever
#1       1     1    51599    62640          8     8684
#2       1     1    88466 16022503       8676     8684
#3       1     2     2785   285255        186     3089
#4       1     2   290880  4178544       2903     3089
#5       2     1    51599  4098530       1282    26511
#6       2     1  4101675 46753618      25229    26511
#7       2     2     2785 36178040      25931    25952
#8       2     2 36185342 36192717         21    25952

如果您的数据很大,您可能需要使用data.table

代码语言:javascript
复制
library(data.table)
setDT(mydf)[, whatever := sum(ProbeCount), by = list(Patient, Chrom)][]

#   Patient Chrom    Start      End ProbeCount whatever
#1:       1     1    51599    62640          8     8684
#2:       1     1    88466 16022503       8676     8684
#3:       1     2     2785   285255        186     3089
#4:       1     2   290880  4178544       2903     3089
#5:       2     1    51599  4098530       1282    26511
#6:       2     1  4101675 46753618      25229    26511
#7:       2     2     2785 36178040      25931    25952
#8:       2     2 36185342 36192717         21    25952
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30179807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档