目前我有一个数据帧,如下所示:
Months Total Date
1 2 6 05/01/2021
2 5 10 18/06/2021
我想转换数据,以便将月份添加到";日期";以及";总计";除以";月份";每个月给出一行,如下所示:
Total Date
1 3 05/01/2021
2 3 05/02/2021
3 2 18/06/2021
4 2 18/07/2021
5 2 18/08/2021
6 2 18/09/2021
7 2 18/10/2021
这里有一种方法-
- 将
Date
更改为日期类,以便更容易对其执行算术运算 uncount
将每行重复Months
次- 对于每一行,将
Total
值除以该行重复的次数 - 为日期的每一行添加1个月
library(dplyr)
library(tidyr)
library(lubridate)
df %>%
mutate(Date = dmy(Date),
row = row_number()) %>%
uncount(Months) %>%
group_by(row) %>%
mutate(Total = Total/n(),
Date = Date %m+% months(row_number() - 1)) %>%
ungroup %>%
select(-row)
# Total Date
# <dbl> <date>
#1 3 2021-01-05
#2 3 2021-02-05
#3 2 2021-06-18
#4 2 2021-07-18
#5 2 2021-08-18
#6 2 2021-09-18
#7 2 2021-10-18