使用dplyr根据列值创建分组(group_by)

4

我希望使用dplyr根据条件进行分组。例如,如果我们有以下表格:

A      B 
1      0
10     1
5      1
6      2

当B=0时,我会创建一个分组,当B>1时,我会创建另一个分组,当B>2时,我会再创建另一个分组,以此类推。下面的近似方法是错误的,但或许有助于理解:
df %>% 
   group_by(B > 0:2) %>% 
   summarize(Total = sum(A))

B==0 还是 B > 0 - M--
1
谢谢您发布那些无法运行的代码 - 这对于了解您的方法非常有帮助。(我想现在以“+1”开头的评论会被拒绝) - camille
1个回答

5

在使用dplyrgroup_by时,每行只能属于一个组。如果需要加入多个组,则需要遍历值并反复进行筛选。以下是一种方法:

purrr::map_df(0:2, ~df %>% filter(B>.x) %>% summarize(b_greater_than=.x, Total=sum(A)))
#   b_greater_than Total
# 1              0    21
# 2              1     6
# 3              2     0

这是一个不错的解决方案,但我认为也许可以直接完成而不需要另一个函数。无论如何,它很有效。 - Francesc VE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接