dplyr: выбрать по имени и значению одновременно - PullRequest
3 голосов
/ 09 апреля 2019

(Этот вопрос, возможно, является дубликатом, но я пока не могу его найти ...)

Используя методы dplyr, как я могу выбрать столбцы из data.frame по именам и значениям одновременно? Например, следующее (что не работает):

> data.frame(x=4, y=6, z=3) %>%
    select_if(matches('x') | mean(.) > 5)
Error: No tidyselect variables were registered

В базе R я бы сделал что-то вроде этого:

> df <- data.frame(x=4, y=6, z=3)
> df[names(df) == 'x' | colMeans(df) > 5]
  x y
1 4 6

Ответы [ 2 ]

6 голосов
/ 09 апреля 2019

Вы можете использовать select с запятой и colMeans

data.frame(x=4, y=6, z=3) %>%
  select(matches("x"), which(colMeans(.) > 5))
  x y
1 4 6
1 голос
/ 09 апреля 2019

Мы могли бы использовать select_if для извлечения имен столбцов на основе условия и использовать это в select для тех имен столбцов, которые соответствуют 'x'

data.frame(x=4, y=6, z=3) %>% 
     select(matches("x"), names(select_if(., ~ mean(.x) > 5)))
#  x y
#1 4 6

ПРИМЕЧАНИЕ. Здесь мы используем select_if, так как ОП хотел получить конкретный ответ. В противном случае это можно сделать многими другими способами

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