r: выберите строку с самым высоким годом, за которым следует самый высокий месяц - PullRequest
0 голосов
/ 28 января 2020

Для моего фрейма данных я хочу отфильтровать строку с самым высоким годом, за которым следует самый высокий месяц.

Пример фрейма данных:

df <- data.frame(ID = c(1:5),
                 year = c(2018,2018,2018,2018,2019),
                 month = c(9,10,11,12,11))

Я пробовал следующее, но это не вернуть любую запись (что имеет смысл, поскольку максимальный год и максимальный месяц находятся в разных строках). У кого-нибудь есть ответ? Очевидно, что мой желаемый результат будет строка 5.

df %>% filter(year == max(year) & month == max(month))

Ответы [ 2 ]

1 голос
/ 28 января 2020

Мы можем сделать:

df %>% 
   filter(year==max(year) & lag(month) == max(month))
  ID year month
1  5 2019    11
0 голосов
/ 28 января 2020

Это вернет самый высокий год, содержащий наибольшее значение месяца в этом году.

df <- df %>%
  arrange(desc(year), desc(month))

  ID year month
1  5 2019    11
2  4 2018    12
3  3 2018    11
4  2 2018    10
5  1 2018     9


df[1,] #  first row

  ID year month
1  5 2019    11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...