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)