использование функции dplyr filter_at () для выбора строк с условиями - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу отфильтровать фрейм данных в соответствии с конкретными условиями в нескольких столбцах.

Я использую следующий пример, чтобы сделать мое утверждение более ясным.

У меня есть фрейм данных:

dat <- data.frame(A = c(122, 122, 122), B = c(0.1, 0.1, 0.1), 
                  C = c(5, 5, 4), D = c(6, 7, 6))

Я хочу выбрать строки, которые содержат оба максимальных значенияв столбцах C и D мой код R:

select <- dat %>%
          group_by(A, B) %>%
          filter(C == max(C) , D == max(D))

, и я хочу, чтобы я хотел:

> select
# A tibble: 1 x 4
# Groups:   A, B [1]
     A     B     C     D
   <dbl> <dbl> <dbl> <dbl>
1   122   0.1     5     7 

Однако я хочу использовать filter_at() function

select <- dat %>%
          group_by(A, B) %>%
          filter_at(vars(C, D), all_vars(. max))

Не сработало.Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 06 февраля 2019

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

dat %>%
    group_by(A, B) %>%
    filter_at(vars(C, D), all_vars(. == max(.)))

Раньше проблема была all_vars(), ожидающая логической оценки.И без оператора равенства, ==, >, <, вы возвращали ошибку.

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