Скопируйте фиктивную строку в набор данных, ссылаясь на предыдущую дату или время, используя R-программирование - PullRequest
0 голосов
/ 19 апреля 2020

Я новичок в программировании на R и пытаюсь сделать какую-то работу в моем офисе. У меня есть кадр данных, как показано ниже:

Sale_date    Sale_State  units_sold   Cummulative_unit_sold
30/1/2020    Kerala          1               1
1/2/2020     Kerala          1               2
2/2/2020     Kerala          2               4
3/2/2020     Tamil Nadu      1               1
3/2/2020     Rajasthan       2               2
3/2/2020     Delhi           1               1
4/2/2020     Kerala          1               5
4/2/2020     Rajasthan       1               3
etc.... So the data is in this kind.

Я хочу вывод в следующем формате

Sale_date    Sale_State  units_sold   Cummulative_unit_sold
30/1/2020    Kerala          1               1
1/2/2020     Kerala          1               2
2/2/2020     Kerala          2               4
3/2/2020     Tamil Nadu      1               1
3/2/2020     Rajasthan       2               2
3/2/2020     Delhi           1               1
3/2/2020     Kerala          2               4(Please observe here in rawdata no sales on 3/2/2020 for kerala state so it should copy the same data as previous date data)
4/2/2020     Kerala          1               5
4/2/2020     Rajasthan       1               3
4/2/2020     Tamil Nadu      1               1(Please observe here in rawdata no sales on 4/2/2020 for Tamil Nadu state, so it should copy the same data as previous data)

Я не понимаю, как это сделать. Это не то, что напрямую заменяет значения NA, но вместо этого я хочу создать фиктивную строку State, для которой нет продаж в соответствующий день, и добавить предыдущие доступные данные.

Спасибо, Hemanth

1 Ответ

0 голосов
/ 19 апреля 2020

Чтобы получить вопрос из очереди. (; Лучше всего использовать tidyr::complete (вариант tidyr::expand) и tidyr::fill, как уже предлагалось @ulfelder:

library(tidyr)
library(dplyr)

tidyr::complete(df, Sale_date, Sale_State) %>% 
  # Fill by Sale_State
  group_by(Sale_State) %>%
  # Arrange by Date
  arrange(as.Date(Sale_date, "%d/%m/%Y")) %>% 
  # fill with data from previous dates
  tidyr::fill(units_sold, Cummulative_unit_sold) %>% 
  ungroup() %>% 
  # To get rid of obs from previous dates created by tidyr::complete
  dplyr::filter(!is.na(units_sold))

#> # A tibble: 11 x 4
#>    Sale_date Sale_State units_sold Cummulative_unit_sold
#>    <fct>     <fct>           <int>                 <int>
#>  1 3/2/2020  Delhi               1                     1
#>  2 4/2/2020  Delhi               1                     1
#>  3 30/1/2020 Kerala              1                     1
#>  4 1/2/2020  Kerala              1                     2
#>  5 2/2/2020  Kerala              2                     4
#>  6 3/2/2020  Kerala              2                     4
#>  7 4/2/2020  Kerala              1                     5
#>  8 3/2/2020  Rajasthan           2                     2
#>  9 4/2/2020  Rajasthan           1                     3
#> 10 3/2/2020  Tamil Nadu          1                     1
#> 11 4/2/2020  Tamil Nadu          1                     1

Создано в 2020-04-19 Представить пакет (v0.3.0)

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