У меня есть набор данных с почтовым индексом и столбцами состояния (среди прочих). Он большой, но не ужасный (4M строк, 70 столбцов), но для фильтрации ошибочных наблюдений требуется целая вечность. В частности, я пытаюсь отбросить наблюдения, когда почтовый индекс не совпадает с состояниями (например, почтовые индексы Нью-Джерси начинаются с 0, но многие почтовые индексы в данных начинаются с 7). Вот мой нынешний подход, но я считаю, что должен быть более быстрый способ. Будем очень благодарны за любые предложения!
df_clean <- df_tmp %>%
filter(!(startsWith(zip, c("7", "8")) & state == "NJ")) %>%
filter(!(startsWith(zip, c("0", "1")) & state == "FL")) %>%
filter(!(startsWith(zip, "4") & state == "ME")) %>%
filter(!(startsWith(zip, c("1", "2")) & state == "MA")) %>%
filter(!(startsWith(zip, "6") & state == "CT"))
Я надеюсь, что это само за себя, но дайте мне знать, будет ли полезен пример набора данных. Спасибо!