按列(id)合并满足条件(属于一个组)的数据框行

问题描述 投票:0回答:1

我有一个 300x5 的数据框,如下所示(3 组,每组 100 行,每组 id 从 01 到 100,相同的 id 意味着相同的 feat2 和 feat3 但总是不同的

num_to_sum
):

因素/组 id num_to_sum 壮举2 壮举3
组1 01 4 ... ...
组1 02 9 ... ...
组2 01 3 ... ...
组2 02 1 ... ...
组3 01 4 ... ...
组3 02 8 ... ...

现在,我想按 id 合并所有行,但前提是它们属于某个组。例如:我想通过 id 合并 group1 和 group2 并将求和运算符应用于

num_to_sum
,因此最终的数据帧(输出)应如下所示:

因素/组 id summed_num 壮举2 壮举3
组12 01 (4+3=)7 ... ...
组12 02 (9+1=)10 ... ...
组3 01 4 ... ...
组3 02 8 ... ...

我不介意其他功能(feat2 和 feat3);实际上,无论组如何,每个 id 的它们都是相同的,所以我可以删除它们,我只是不希望它们在最终的 df 中重复,因为这意味着重复的数据,这很混乱。

如果有一个解决方案不仅可以应用于两个组,还可以应用于要合并的

n
组,那就太好了。

我看过

stats::aggregate
,但我不知道如何用条件进行聚合。

r dplyr
1个回答
0
投票

使用

by

> by(df, df$factor.group %in% paste0('group', 1:2), aggregate, num_to_sum ~ id, sum)
df$factor.group %in% paste0("group", 1:2): FALSE
  id num_to_sum
1  1          4
2  2          8
----------------------------------------------------------------------------------------------------- 
df$factor.group %in% paste0("group", 1:2): TRUE
  id num_to_sum
1  1          7
2  2         10
© www.soinside.com 2019 - 2024. All rights reserved.