У меня есть фрейм данных, который я хочу отфильтровать контейнером количества контейнера на каждой станции в данный момент времени в зависимости от типа контейнера. Используемые данные содержат дату выпуска и получения, станцию прибытия, уникальный код контейнера и тип контейнера. Одна строка кадра данных - это одно движение.
library(dplyr)
library(tidyverse)
library(lubridate)
release.date <- as_date(c("2017-12-15","2018-05-31", "2017-03-03", "2017-11-16", "2017-10-15", "2017-12-22", "2017-12-02"))
receive.date <- as_date(c("2018-12-15","2018-08-31", "2017-09-03", "2017-12-16", "2017-11-15", "2017-12-24", "2017-12-02"))
Routen2 <- data.frame(release.date, receive.date, destination.station = c("New York", "London", "New York", "London", "New York", "New York", "New York"), container.code = c("A1", "B2", "B1", "B1", "B4", "B3", "A1"), container.type = c("a", "b", "b", "b", "b", "b", "a"))
Идея состоит в том, чтобы фильтровать каждое движение, которое начинается после крайнего срока (2017.12.31). Затем закажите его после даты выпуска и используйте уникальную функцию, чтобы получить только самое новое движение каждого отдельного контейнера, которое произошло до установленного срока. Затем отфильтруйте дату получения для крайнего срока, чтобы исключить контейнер, все еще находящийся в движении И, наконец, получить счет на станциях с типами контейнеров.
Routen2 %>%
filter(release.date <= "2017-12-31") %>%
.[order(.$release.date),] %>%
.[unique(.$container.code, fromLast = TRUE),] %>%
filter(receive.date <= "2017-12-31") %>%
count(destination.station, container.type)
Результат должен выглядеть следующим образом:
destination.station container.type n
1 New York a 1
2 New York b 2
3 London b 1
В этом примере данных Результат полностью отсутствует в Лондоне. Параметр container.code не уникален после уникальной функции (когда скрипт запускается без двух последних строк). Почему не работает?