R 如何在数据框中进行数学运算并将其结果生成新列?

R 如何在数据框中进行数学运算并将其结果生成新列?,r,date,division,populate,R,Date,Division,Populate,我想用一些基本的数学来知道我们每天需要多少存货。我想除以股票的开始日期和结束日期的差异,所以我可以得到每天的股票。 我现在有这样的数据 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/0

我想用一些基本的数学来知道我们每天需要多少存货。我想除以股票的开始日期和结束日期的差异,所以我可以得到每天的股票。 我现在有这样的数据

 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
像这样

 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

有人知道怎么做吗?

一种可能性是:

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
df%>%
突变(日期=map2(开始日期,结束日期,顺序,按=“1天”))%>%
选择(-start\u date,-end\u date)%>%
unest()%>%
分组依据(项目)%>%
突变(库存日=库存/n()
促销品折扣库存日期库存日
1 a轴15%200 2019-08-30 50
2 a ax 15%200 2019-08-31 50
3 a轴15%200 2019-09-01 50
4 a轴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外汇15%200 2019-09-04 200

1)通过
as.date
开始日期
结束日期
转换为
日期
对象。2) 使用
difftime
units=“days”
获取日期之间的天数。3) 将股票除以这样的差额。(我更改了列名,以使表格可读
read.table
)。但如何在其之外创建新列?要为R
数据框创建新列,您可以使用
$如果我不仅要按项目分组,而且要按促销单分组,如何编写代码?是分组(促销,项目)?完全一样,是:)