使用dplyr根据列值进行分组(group_by)

时间:2019-10-25 15:15:25

标签: 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))

1 个答案:

答案 0 :(得分:5)

group_bydplyr一起使用时,行不能属于多个组。您需要映射值并重复进行过滤。这是做到这一点的一种方法

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