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")
我想根据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")