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数据框创建新列,您可以使用$如果我不仅要按项目分组,而且要按促销单分组,如何编写代码?是分组(促销,项目)?完全一样,是:)