我有一个很大的数据框,其中一个列(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(而不是侦探)的帮助。
答案 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_by
和summarise_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)
)的必需条件。