r-如何根据特定列值添加行并相应地追加日期列

  • 本文关键字:日期 追加 添加行 何根 r tidyr
  • 更新时间 :
  • 英文 :


目前我有一个数据帧,如下所示:

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

最新更新