R:如果第三列的值相同,如何添加两个独立列的值

R:如果第三列的值相同,如何添加两个独立列的值,r,dataframe,sum,R,Dataframe,Sum,我有一个大数据框,如下所示: # project sample count freq a-chain b-chain v 1 house 1_1 124 0.98 ZZZZZ tttcc 4 2 house 1_1 20 0.02 BBBBB xxwww 5 3 house 1_1 1 0.01 ZZZZZ

我有一个大数据框,如下所示:

 #   project  sample   count    freq    a-chain    b-chain   v
 1   house    1_1      124      0.98    ZZZZZ      tttcc     4
 2   house    1_1       20      0.02    BBBBB      xxwww     5
 3   house    1_1        1      0.01    ZZZZZ      tccct     2
 4   house    1_2        4      0.02    ZZZZZ      rrttt     1
 5   tree     B_1       34      0.45    TTTTT      oooee     5
 6   tree     B_1       42      0.51    RRRRR      vvvqq     7
 7   tree     C_2       43      0.77    VVVVV      iippr     9
 8   tree     B_1       72      0.34    TTTTT      xxttr     7
我需要通过合并那些对“project”、“sample”和“a-chain”具有相同值的行来压缩行数。我需要对这些行的“count”和“freq”值求和。生成的数据帧应该只有“project”、“sample”、“count”、“freq”和“a-chain”。我被困在一条特定的线路上,但我可能从一开始就采取了埃罗纽斯方法。感谢您的帮助

我已经尝试使用ddply、summary和aggregate函数的组合,但我能做的最好的事情就是只添加我需要求和的两列中的一列

这是我被卡住的地方:

 max.count.nt<-all.tcr.max %>% group_by(project, sample) %> summarise(count=sum(count)) %>% select(project,sample, count, freq, a-chain)

我们可以使用
mutate
创建一个列,而不是
summary
,因为
summary
只返回与分组列一起汇总的列。稍后,如果需要,对所选列应用
distinct
,以返回第一行

library(dplyr)
df1 %>% 
   group_by(project, sample) %>% 
   mutate(count=sum(count))%>% 
   select(project,sample, count, freq, a.chain) %>%
   ungroup %>%
   distinct(project, sample, a.chain, count, .keep_all = TRUE)

我发现在
摘要
之前有一个拼写错误
%%>
,而不是
%%
。在屏幕上键入时,我忘记添加另一个“%”符号。但这不是问题所在。原始代码有它。我认为您需要
mutate
df1%%>%groupby(project,sample)%%>%mutate(count=sum(count))%%>%select(project,sample,count,freq,a.chain)
因为在
summary
步骤之后,只有分组变量在
mutate
之后,汇总列才可用,如果需要对其进行总结,请在所选列上使用
distinct
。如果有更好的方法,则不一定需要进行总结。我会尝试变异。但是我还需要添加freq列的值,我不确定如何将其包含在行中。我会在几分钟后检查并让您知道。我不得不离开电脑去处理另一个问题。谢谢。它似乎在为每行中的“计数”添加所有行的总和。生成的表应该只对共享相同“项目”、“样本”和a.chain的行的count和freq值求和,这样就不会显示重复。@Orion11如果还需要
a.chain
,请将其添加到
group\u by
中,然后在
之后选择
%>%distinct(项目、样本、a.chain、计数)
让我试试这个。我今晚去看看。
library(dplyr)
df1 %>% 
   group_by(project, sample) %>% 
   mutate(count=sum(count))%>% 
   select(project,sample, count, freq, a.chain) %>%
   ungroup %>%
   distinct(project, sample, a.chain, count, .keep_all = TRUE)