根据一列中的名称创建多列的总和

时间:2019-01-04 00:46:42

标签: r

我有一个很大的数据框,其中一个列(Phylum)具有重复的名称,而其他253个列(每个具有唯一的名称)具有Phylum列的计数。我想对与每个Phylum相对应的每一列中的计数求和。

这是我的数据的简化版本:

     Phylum    sample1    sample2    sample3 ...    sample253
1    P1        2          3          5              5
2    P1        2          2          10             2
3    P2        1          0          0              1
4    P3        10         12         3              1
5    P3        5          7          14             15

我见过类似的问题,但是它们是针对较少的列的,您可以在其中列出要汇总的列的名称。我不想输入253个唯一的列名。

我希望我的结果看起来像这样

    Phylum    sample1    sample2    sample3 ...    sample253
1   P1        4          5          15             7
2   P2        1          0          0              1
3   P3        15         19         17             16

我将不胜感激。很抱歉问题的格式,这是我第一次寻求有关stackoverflow(而不是侦探)的帮助。

1 个答案:

答案 0 :(得分:0)

如果您的起始文件看起来像这样(test.csv):

Phylum,sample1,sample2,sample3,sample253
P1,2,3,5,5
P1,2,2,10,2
P2,1,0,0,1
P3,10,12,3,1
P3,5,7,14,15

然后,您可以使用dplyr中的group_bysummarise_each

read_csv('test.csv') %>% 
  group_by(Phylum) %>% 
  summarise_each(funs(sum))

(我首先为tidyverse加载了library(tidyverse)。)

请注意,如果您试图在一列中执行此操作,则可以简单地使用summarise

read_csv('test.csv') %>% 
  group_by(Phylum) %>% 
  summarise(sum(sample1))

summarise_each是在每一列上运行该功能(在上面,funs(sum))的必需条件。