Фильтрация в dplyr на основе двух нечисловых значений c - PullRequest
0 голосов
/ 25 января 2020

Я фильтрую набор данных, и этот блок работает нормально:

    dwell <- rail %>% 
  filter_(Measure == "Average Terminal Dwell Time (Excluding Cars on Run Through Trains) (Hours)",
         Variable == "System") %>% 
  gather(Date, Hrs, -("railroad":"Sub-Variable"))

Но я хочу запустить следующий код, добавив второй параметр в переменную:

dwell <- rail %>% 
  filter_(Measure == "Average Terminal Dwell Time (Excluding Cars on Run Through Trains) (Hours)",
         Variable == "System" & "System (U.S.)") %>% 
  gather(Date, Hrs, -("railroad":"Sub-Variable"))

Но когда Я делаю это и получаю следующую ошибку: «Операции возможны только для чисел c, логических или сложных типов». Я пытался поменять местами & для | и это тоже не сработало. Я чувствую, что это будет простой переход, когда кто-то скажет мне. Спасибо!

Ответы [ 2 ]

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

Попробуйте изменить Variable == "System" & "System (U.S.)" на Variable == "System" | Variable == "System (U.S.)". Это должно работать.

0 голосов
/ 25 января 2020

Мы можем использовать %in% с Variable, если мы пытаемся установить фиксированное совпадение для нескольких элементов, т. Е.> 1. С %in% мы можем включить любое количество элементов как vector

* 1006. *

Или может быть проще, если его можно сопоставить с regex

rail %>% 
    filter_(Measure == "Average Terminal Dwell Time (Excluding Cars on Run Through Trains) (Hours)",
         startsWith(Variable, "System")) %>% 
    gather(Date, Hrs, -("railroad":"Sub-Variable"))

В коде ОП Variable == "System" & "System (U.S.)" Часть & не оценивается, как мы нужно либо указать переменную дважды, но это все еще не правильно, потому что столбец не может иметь два элемента в одной позиции

...