У меня есть фиктивные данные, как показано ниже
df = data.frame(name = c(rep("Anna",8),rep("Jenny",7)),
id = c(100,100,100,100,100,100,100,100,250,250,250,250,250,250,250),
time = c("t2","t3","t5","t1","t7","t2","t1","t5","t1","t2","t6","t2","t8","t6","t5"), stringsAsFactors = F)
> df
name id time
1 Anna 100 t2
2 Anna 100 t3
3 Anna 100 t5
4 Anna 100 t1
5 Anna 100 t7
6 Anna 100 t2
7 Anna 100 t1
8 Anna 100 t5
9 Jenny 250 t1
10 Jenny 250 t2
11 Jenny 250 t6
12 Jenny 250 t2
13 Jenny 250 t8
14 Jenny 250 t6
15 Jenny 250 t5
Мой ожидаемый результат для каждой группы id
, я хочу flag
значений между t2 и * включительно1008 * t5 с использованием переменной time
- в каждой группе будет несколько таких случаев, и код должен быть в состоянии исключить некоторые неработающие случаи, как в примере ниже
> df
name id time Flag
1 Anna 100 t2 1
2 Anna 100 t3 1
3 Anna 100 t5 1
4 Anna 100 t1 0
5 Anna 100 t7 0
6 Anna 100 t2 1
7 Anna 100 t1 1
8 Anna 100 t5 1
9 Jenny 250 t1 0
10 Jenny 250 t2 0
11 Jenny 250 t6 0
12 Jenny 250 t2 1
13 Jenny 250 t8 1
14 Jenny 250 t6 1
15 Jenny 250 t5 1
Прошуэто используя режим dplyr()
, так как я могу добавить больше группирующих переменных в будущем для масштабируемости.Я искал, как использовать which()
внутри функций dplyr, не очень много, я нашел здесь один эквивалент Python Получить строки между двумя значениями столбца, используя Python
Edit1: у меня естьнесколько разделов t2-t5 в каждой группе, которые необходимо пометить.Спасибо @ronak за то, что подняли его
Заранее спасибо