Как отфильтровать несколько диапазонов дат - PullRequest
0 голосов
/ 30 октября 2019

У меня есть набор данных с большим количеством дат. Я хотел бы удалить все даты, отсутствующие в интервале времени с 1 января по 2 февраля из всех доступных лет (2015, 2016, 2017 и 2018 годы)

  new_data <- my_data %>%
      filter(data > "2015-01-01" & data <"2015-02-02" & 
               data > "2016-01-01" & data <"2016-02-02" &
               data > "2017-01-01" & data <"2017-02-02" &
               data > "2018-01-01" & data <"2018-02-02") 

Я пробовал эту команду, но я нене получается желаемый результат:

   sdf_nrow(new_data)
    0 

Я использую спарк, и поэтому я должен использовать dplyr

1 Ответ

1 голос
/ 30 октября 2019

В данный момент вы говорите «это дата в январе 2015 года и в то же время в январе 2016 года… и т. Д.». Это, очевидно, никогда не соответствует действительности, поскольку эти диапазоны дат не перекрываются. Вам нужно использовать «или» вместо «и»:

new_data <- my_data %>%
    filter(
        data > "2015-01-01" & data < "2015-02-02" |
        data > "2016-01-01" & data < "2016-02-02" |
        data > "2017-01-01" & data < "2017-02-02" |
        data > "2018-01-01" & data < "2018-02-02"
    )

Кроме того, убедитесь, что ваш столбец data (не date?) Действительно ссылается на дату и имеет соответствующий тип, который делает правильную вещь по сравнению со строкой символов.

Остерегайтесь с приоритетом оператора: это работает, потому что & имеет более высокий приоритет, чем |, но многие люди находят его более читабельным, чтобы бытьявные и поставьте круглые скобки вокруг внутренних … & … выражений.

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