【问题标题】:How can I aggregate rows by orders?如何按订单聚合行?
【发布时间】:2022-11-21 00:38:57
【问题描述】:

我有一个问题:

   itemID order dayR           n
    <dbl> <dbl> <date>     <int>
 1      9     1 2018-01-01     1
 2     11     1 2018-01-01     1
 3     19     1 2018-01-01     2
 4     26     1 2018-01-01    96
 5     26     2 2018-01-01     5
 6     26     3 2018-01-01     1
 7     35     1 2018-01-01   379
 8     35     2 2018-01-01    23
 9     35     3 2018-01-01     4
10     35     4 2018-01-01     1

我想汇总订单,然后将它们汇总到 n 以获得唯一的 itemID,例如 itemID 26 (1*96 + 2*5 + 3*1 = 109):

   itemID  dayR           n
    <dbl>  <date>      <int>
 1    26   2018-01-01   109 
...

复制代码:

structure(list(itemID = c(9, 11, 19, 26, 26, 26, 35, 35, 35, 
                          35), order = c(1, 1, 1, 1, 2, 3, 1, 2, 3, 4), dayR = structure(c(17532, 
                                                                                           17532, 17532, 17532, 17532, 17532, 17532, 17532, 17532, 17532
                          ), class = "Date"), n = c(1L, 1L, 2L, 96L, 5L, 1L, 379L, 23L, 
                                                    4L, 1L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", 
                                                                                                 "data.frame"))

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用group_by()summarize()

    df %>% 
      group_by(itemID, dayR) %>% 
      summarize(n=sum(n*order))
    

    输出:

      itemID dayR           n
       <dbl> <date>     <dbl>
    1      9 2018-01-01     1
    2     11 2018-01-01     1
    3     19 2018-01-01     2
    4     26 2018-01-01   109
    5     35 2018-01-01   441
    

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多