У меня есть небольшая проблема с R и тидиверсом, которую, к сожалению, я не могу решить.
Скажем, у нас ежеквартальные наблюдения за тремя магазинами (в минимальном рабочем примере значения действительно не имеют значения, важны NA и несколько почтовых индексов в последнем столбце).
library(tidyverse)
mydf <- tribble(~shop, ~quarter, ~revenue, ~postcode, "Shop A",1, 100, NA, "Shop A",2, 210, NA,"Shop A",3, 50 , NA, "Shop A",4, 100, 1000, "Shop B", 1, 40, NA, "Shop B", 2, 80, NA, "Shop B", 3, 20, NA, "Shop B", 4, 40, NA, "Shop C", 1, 20, 2011, "Shop C", 2, 20, NA, "Shop C", 3, 30, NA, "Shop C", 4, 25, NA,)
Магазин A имеет только один почтовый индекс в четвертом квартале. Магазин B не имеет никакого почтового индекса, а магазин C имеет только почтовый индекс в первом квартале, см. Mydf.
Мы можем с уверенностью предположить, что почтовые индексы для магазинов не меняются, поэтому мы можем перенести последнее наблюдаемое значение, т.е. почтовый индекс.
Я использую для этого tidyverse, команда выглядит следующим образом.
mydf %>% fill(postcode, .direction="down")
mydf %>% fill(postcode, .direction="up")
К сожалению, R, похоже, не очень заботится о единиц измерения, он просто выбирает найденные им почтовые индексы и переносит это значение вперед, в этом примере через различных магазинов.
Что я хотел бы в конечном итоге - это заполнить почтовые индексы для Магазины A и C, а не для B, для которого мне пришлось бы вручную искать почтовый индекс.
(в наборе данных, с которым я работаю, есть тысячи аберраций ("магазинов"), так что это будет хороший способ минимизировать рабочую нагрузку.)
Я довольно плохо знаком с R, поэтому, пожалуйста, не обращайте на меня внимания sh.
Заранее спасибо за любые подсказки по решению.
Дэвид