Filling missing dates by group

后端 未结 3 1452
盖世英雄少女心
盖世英雄少女心 2020-11-28 12:55

I have a data set that looks like this:

shop_id,item_id,time,value
150,1,2015-07-10,3
150,1,2015-07-11,5
150,1,2015-07-13,2
150,2,2015-07-10,15
150,2,2015-07         


        
3条回答
  •  温柔的废话
    2020-11-28 13:47

    Here's a solution with fill_by_value from padr:

    library(dplyr)
    library(tidyr)
    library(padr)
    
    df %>%
      mutate(time = as.Date(time)) %>%
      group_by(item_id) %>%
      pad() %>%              # from padr
      fill(shop_id) %>%      # from tidyr
      fill_by_value(value)   # from padr
    

    Result:

    # A tibble: 7 x 4
    # Groups:   item_id [2]
      shop_id item_id       time value
                 
    1     150       1 2015-07-10     3
    2     150       1 2015-07-11     5
    3     150       1 2015-07-12     0
    4     150       1 2015-07-13     2
    5     150       2 2015-07-10    15
    6     150       2 2015-07-11     0
    7     150       2 2015-07-12    12
    

    Data:

    df = read.table(text = "shop_id,item_id,time,value
    150,1,2015-07-10,3
    150,1,2015-07-11,5
    150,1,2015-07-13,2
    150,2,2015-07-10,15
    150,2,2015-07-12,12", header = TRUE, sep = ",")
    

提交回复
热议问题