当某些条件匹配时,我需要给唱片贴上标签。
例如,当
sw1=='q'
&安培
type=='good'
它是一个
record_1
和
记录1
需要重复直到下一次击中
sw1='q'
&安培
类型=‘好’
是的。
这就是我的意思
df <- data.frame(gr = rep(letters[1:2],each=8),
sw1=rep(c(letters[17:20],sw2=letters[c(17,21,17,23)]),2),
type =c(c("good", "bad",'Visky','Wine',"good", "good","Visky","bad"),c("good","Wine","Visky","bad","good","Visky","good","bad")))
gr sw1 type
1 a q good #record 1
2 a r bad
3 a s Visky
4 a t Wine
5 a q good #record 2
6 a u good
7 a q Visky
8 a w bad
9 b q good #record 1
10 b r Wine
11 b s Visky
12 b t bad
13 b q good #record 2
14 b u Visky
15 b q good #record 3
16 b w bad
所以我试着跟着
library(dplyr)
df%>%
group_by(gr)%>%
mutate(label=cummax(type=="good"&sw1=="q"))
哪些输出
# A tibble: 16 x 4
# Groups: gr [2]
gr sw1 type label
<fct> <fct> <fct> <int>
1 a q good 1
2 a r bad 1
3 a s Visky 1
4 a t Wine 1
5 a q good 1
6 a u good 1
7 a q Visky 1
8 a w bad 1
9 b q good 1
10 b r Wine 1
11 b s Visky 1
12 b t bad 1
13 b q good 1
14 b u Visky 1
15 b q good 1
16 b w bad 1
但预期的产出是
gr sw1 type label record
1 a q good 1 record_1
2 a r bad 1 record_1
3 a s Visky 1 record_1
4 a t Wine 1 record_1
5 a q good 2 record_2
6 a u good 2 record_2
7 a q Visky 2 record_2
8 a w bad 2 record_2
9 b q good 1 record_1
10 b r Wine 1 record_1
11 b s Visky 1 record_1
12 b t bad 1 record_1
13 b q good 2 record_2
14 b u Visky 2 record_2
15 b q good 3 record_3
16 b w bad 3 record_3
忘了说我也试过
dense_rank
但产出甚至还没有接近预期的产出。