如何在数据框中进行数学运算并为其结果创建一个新列?

how to do math operation in data frame and make a new column of its results?

我想使用一些基本的数学知识来了解我们每天需要多少库存。我想根据开始日期和结束日期的差异来划分库存,这样我就可以每天获得库存。 我目前有这样的数据

 promo  start_date  end_date  item   discount   stock
    a     30/08/19   02/09/19   ax      15%       200      
    a     30/08/19   02/09/19   bx      15%       200
    a     27/08/19   27/08/19   cx      25%       200
    a     27/08/19   27/08/19   dx      15%       200
    b     03/09/19   10/09/19   ex      15%       200
    b     04/09/19   04/09/19   fx      15%       200

变成这样

promo   date    item   discount   stock  stock/day
   a    30/08/19   ax      15%       200     50
   a    31/08/19   ax      15%       200     50
   a    01/09/19   ax      15%       200     50
   a    02/09/19   ax      15%       200     50
   a    30/08/19   bx      15%       200     50
   a    31/08/19   bx      15%       200     50
   a    01/09/19   bx      15%       200     50
   a    02/09/19   bx      15%       200     50
   a    27/08/19   cx      25%       200    200 
   a    27/08/19   dx      15%       200    200
   b    03/09/19   ex      15%       200     25
   b    04/09/19   ex      15%       200     25
        ... continue as above
   b    09/09/19   ex      15%       200     25
   b    10/09/19   ex      15%       200     25
   b    04/09/19   fx      15%       200    200

有人知道怎么做吗?

一个 tidyverse 可能是:

df %>%
 mutate(date = map2(start_date, end_date, seq, by = "1 day")) %>%
 select(-start_date, -end_date) %>%
 unnest() %>%
 group_by(item) %>%
 mutate(stock_day = stock/n())

   promo item  discount stock date       stock_day
   <chr> <chr> <chr>    <int> <date>         <dbl>
 1 a     ax    15%        200 2019-08-30        50
 2 a     ax    15%        200 2019-08-31        50
 3 a     ax    15%        200 2019-09-01        50
 4 a     ax    15%        200 2019-09-02        50
 5 a     bx    15%        200 2019-08-30        50
 6 a     bx    15%        200 2019-08-31        50
 7 a     bx    15%        200 2019-09-01        50
 8 a     bx    15%        200 2019-09-02        50
 9 a     cx    25%        200 2019-08-27       200
10 a     dx    15%        200 2019-08-27       200
11 b     ex    15%        200 2019-09-03        25
12 b     ex    15%        200 2019-09-04        25
13 b     ex    15%        200 2019-09-05        25
14 b     ex    15%        200 2019-09-06        25
15 b     ex    15%        200 2019-09-07        25
16 b     ex    15%        200 2019-09-08        25
17 b     ex    15%        200 2019-09-09        25
18 b     ex    15%        200 2019-09-10        25
19 b     fx    15%        200 2019-09-04       200