r - 按组对多个变量求和

标签 r

<分区>

我有一个像这样的 R 数据框,有 45389 行

             gene_id     KOIN1    KOIN2     KOIN3     KOIP1    KOIP2       KOIP3
1 ENSMUSG00000000001 6.0056300 4.677550 6.3490400 9.9992300 9.931780 12.56900000
2 ENSMUSG00000000003 0.0000000 0.000000 0.0000000 0.0000000 0.000000  0.00000000
3 ENSMUSG00000000028 0.9988830 0.407537 1.5629300 0.1845460 1.899790  0.85186600
4 ENSMUSG00000000031 0.0000000 0.818696 0.3708190 0.0419544 0.000000  0.02832700
5 ENSMUSG00000000037 0.0160579 0.172857 0.0988266 0.0000000 1.174690  0.00726742
6 ENSMUSG00000000049 0.3923090 0.000000 0.0000000 0.0000000 0.124112  0.01811530

等等……

gene_id 列中有一些重复项。例如,

5090  ENSMUSG00000025515 0.00000000 0.00000000 0.1572500 0.000000000 0.000000 0.0000000
5091  ENSMUSG00000025515 0.00000000 0.00000000 0.1572500 0.000000000 0.000000 0.0000000
5095  ENSMUSG00000025515 0.00000000 0.00000000 0.0386388 0.000000000 0.000000 0.0000000
5096  ENSMUSG00000025515 0.00000000 0.00000000 0.0386388 0.000000000 0.000000 0.0000000
5100  ENSMUSG00000025515 0.00000000 0.00000000 0.0000000 0.000000000 0.000000 0.0000000
5101  ENSMUSG00000025515 0.00000000 0.00000000 0.0000000 0.000000000 0.000000 0.0000000
5105  ENSMUSG00000025515 0.33817000 0.06733700 0.4894620 0.000000000 0.000000 0.0000000
5106  ENSMUSG00000025515 0.33817000 0.06733700 0.4894620 0.000000000 0.000000 0.0000000
5110  ENSMUSG00000025515 0.00863568 0.00000000 0.0337577 0.000000000 0.000000 0.0000000
5111  ENSMUSG00000025515 0.00863568 0.00000000 0.0337577 0.000000000 0.000000 0.0000000

我基本上想做的是将所有重复项折叠成一行,每列的值是所有值的总和。

我认为 plyr 包中的 ddply 可以工作,但它仍然给我所有重复项

newdataframe <- ddply(dataframe,"gene_id",numcolwise(sum))

这是我跑的。

有什么建议吗?

最佳答案

另一种选择:

library(dplyr)
df %>%
  group_by(gene_id) %>%
  summarise_each(funs(sum))

给出:

#Source: local data frame [7 x 7]
#
#             gene_id     KOIN1    KOIN2     KOIN3     KOIP1    KOIP2       KOIP3
#              (fctr)     (dbl)    (dbl)     (dbl)     (dbl)    (dbl)       (dbl)
#1 ENSMUSG00000000001 6.0056300 4.677550 6.3490400 9.9992300 9.931780 12.56900000
#2 ENSMUSG00000000003 0.0000000 0.000000 0.0000000 0.0000000 0.000000  0.00000000
#3 ENSMUSG00000000028 0.9988830 0.407537 1.5629300 0.1845460 1.899790  0.85186600
#4 ENSMUSG00000000031 0.0000000 0.818696 0.3708190 0.0419544 0.000000  0.02832700
#5 ENSMUSG00000000037 0.0160579 0.172857 0.0988266 0.0000000 1.174690  0.00726742
#6 ENSMUSG00000000049 0.3923090 0.000000 0.0000000 0.0000000 0.124112  0.01811530
#7 ENSMUSG00000025515 0.6936114 0.134674 1.4382170 0.0000000 0.000000  0.00000000

关于r - 按组对多个变量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33176327/

相关文章:

两个特定模式之间的正则表达式(包括换行符)

R&RCurl : Error 54 in libcurl

r - R 3.0.0 中 by() 函数的奇怪行为?

r - 将 texreg 或 stargazer R 中的模型显示格式设置为科学

r - 无法使用 cairo 安装 R

r - 根据起始字母和列中是否存在星号进行过滤

r - append 到具有动态名称的列表

r - 如何将 UTF8 编码的表情符号字符转换为图像?

r - 在aggregate.data.frame : arguments must have same length 中出错

r - DESCRIPTION 元信息错误