Я пытаюсь очистить свои данные в R (cc. 1M строк). Для каждого E (ntity) я хотел бы удалить строки, которые появляются после последнего вхождения 1 в столбце V (alue). Строки упорядочены по E и A (ttribute). Что было бы эффективным способом сделать это?Удаление строк после последнего появления значения в каждой группе
Пример:
Из этого
E = c(1,1,1,2,2,2,2,3,3,3,3,3)
A = c(1,2,3,1,2,3,4,1,2,3,4,5)
V = c(1,0,1,0,0,1,0,1,1,1,0,0)
df = data.frame(E,A,V)
df
Я хотел бы создать этот
E = c(1,1,1,2,2,2,3,3,3)
A = c(1,2,3,1,2,3,1,2,3)
V = c(1,0,1,0,0,1,1,1,1)
df = data.frame(E,A,V)
df
или: 'setDT (ДФ) [глава (.sd , max (который (V == 1))), by = E] ' – Jaap
Я пошел с setDT (df) [, head (.SD, max (который (V == 1))), by = E] as он может обрабатывать случаи со всеми 0-с – SunWuKung