根据dplyr的列值创建组(group_by)

根据dplyr的列值创建组(group_by),r,dplyr,R,Dplyr,我想根据条件使用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)) 将group\u by与dplyr一起使用时,行不能属于多个组。您需要映射值并重复进行过滤。这里有

我想根据条件使用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))

group\u by
dplyr
一起使用时,行不能属于多个组。您需要映射值并重复进行过滤。这里有一种方法

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

B==0
B>0
?感谢您发布了不起作用的代码,这有助于了解您的方法。(我猜评论现在会因为以“+1”开头而被拒绝)这是一个很好的解决方案,但我认为可能不需要另一个函数就可以直接完成。不管怎样,它工作得很好。