dplyr - 总结中的条件语句

dplyr - condtional statement in summarise

我想根据group_by序列号

做一个有条件的dply总结
serial  type    qty price   type1   type2
1   B   54  3694    N   M
1   B   96  3694    N   M
1   S   150 3694    Y   P
2   B   25  3694    N   M
2   B   21  3694    N   A
2   B   50  3694    N   P
2   B   104 3694    N   M
2   S   200 3694    Y   P
3   S   1   3695    N   M
3   B   75  3695    Y   P
3   S   74  3695    N   M
4   S   1   3694    N   A
4   B   36  3694    N   M
4   B   4   3694    N   A
4   S   36  3694    N   P
4   S   20  3694    N   M
4   B   181 3694    N   M
4   S   164 3694    N   P
5   B   1   3695    Y   A
5   S   1   3695    N   M
6   S   1   3695    N   M
6   B   1   3695    Y   A

这个我要转换成下面的table

serial  header1 SUM1    header2 SUM2    B   S   GROUP_B GROUP_S
1   BN  150 SY  150 N   Y   MM  P
2   BN  200 SY  200 N   Y   MAPM    P
3   BY  75  SN  75  Y   N   P   MM
4   BN  221 SN  221 N   N   MAM APMP
5   BY  1   SN  1   Y   N   A   M
6   BY  1   SN  1   Y   N   A   M

无法处理摘要中的条件

以下管道执行此转换。

library(tidyr)
library(dplyr)

tab %>% 
    unite("header0", type, type1, sep = "", remove = FALSE) %>% 
    group_by(serial) %>% 
    mutate(
        isB = type == "B",
        isS = type == "S") %>% 
    summarise(
        header1 = header0[isB][1L],
        SUM1 = sum(qty[isB]), 
        header2 = header0[isS][1L],
        SUM2 = sum(qty[isS]), 
        B = type1[isB][1L], 
        S = type1[isS][1L],
        GROUP_B = paste(type2[isB], collapse = ""), 
        GROUP_S = paste(type2[isS], collapse = ""), 
        .groups = "drop")