【问题标题】:R: inserting rows for missing observations in sales data [duplicate]R:在销售数据中插入缺失观察的行[重复]
【发布时间】:2020-03-13 07:29:26
【问题描述】:

这可能是重复的。我尝试寻找解决方案,但主要是因为我真的不知道如何构建我的问题。所以我将包含一个工作示例:

想象一下我有这个 df:

 df <- x <- data.frame(Product = c("A", "A", "A", "B","B", "C", "C", "C", "C", "C"), Year = c(2014, 2017, 2018, 2017, 2018, 2013, 2014, 2016, 2017, 2018), Sales  = c(4, 2, 3, 5, 1, 3, 3, 4, 7, 5))

我想做的是: 在 2013:2019 范围内,为每一年的每个产品添加一行,即使该产品在该年没有售出。所以我想要的输出是这样的:

Product   Year   Sales
    A     2013       0
    A     2014       4
    A     2015       0
    A     2016       0
    A     2017       2
    A     2018       3
    A     2019       0

感谢您的帮助。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们可以使用tidyr::complete

    tidyr::complete(df,Product,Year = seq(min(Year), max(Year)), fill=list(Sales = 0))
    
    #  Product  Year Sales
    #  <fct>   <dbl> <dbl>
    # 1 A        2013     0
    # 2 A        2014     4
    # 3 A        2015     0
    # 4 A        2016     0
    # 5 A        2017     2
    # 6 A        2018     3
    # 7 B        2013     0
    # 8 B        2014     0
    # 9 B        2015     0
    #....
    

    如果必须固定范围 (2013:2019) 而与数据中的年份无关,我们可以明确指定它。

    tidyr::complete(df, Product, Year = 2013:2019, fill = list(Sales = 0))
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多