У меня есть фрейм данных с 3 полями (ID, Date, alue), и для каждого ID я хочу, чтобы строка имела минимальную дату между всеми строками, у которых дата больше, чем строка с самой большой датой со значением == 0и == 2. Я не знаю, ясно ли это, но я думаю, что с примером ниже это будет.
Точнее, мой фрейм данных выглядит так:
ID Date Value
1 19960708 3
1 19960901 2
1 19960916 3
1 19970901 0
1 19971001 3
1 19971231 3
1 19980101 3
2 19900806 3
2 19901215 3
2 19910629 0
2 19911007 3
2 19911201 3
2 19990901 3
2 20001001 3
Я хотел бы иметь в качестве вывода:
ID Date Value
1 19971001 3
2 19911007 3
Этот вывод, потому что для идентификатора 1 наибольшая дата со значением == 0 равна 19970901. Поэтому я беру минумин значений больше, чем 19970901.То же самое для идентификатора 2.
Я пытаюсь использовать dplyr для фильтрации данных, но у меня нет вывода, который я хочу.Ниже кода, который я использую:
df %>%
group_by(ID) %>%
filter(DATE > max(df[VALUE==0 | VALUE==2,]$DATE)) %>%
filter(DATE == min(DATE))
Вывод этого не тот, который я ожидаю, потому что он работает для первого идентификатора, но затем он использует эту дату для сравнений вдругие идентификаторы.В качестве вывода у меня есть:
ID Date Value
1 19971001 3
2 19990901 3
Как я могу это исправить?Спасибо.