如何在R的DataFrame中补全起止日期间的行并填充对应值
补全时间序列并生成累积值的R实现
首先加载所需包并定义原始数据:
library(tidyverse) df <- tibble::tribble( ~name, ~date, ~value, "Corpus", "2019-03-01", 0.8, "Corpus", "2019-08-01", 1.6, "Cameron", "2019-12-01", 1.32, "Cameron", "2020-08-01", 1.98 )
可以通过以下步骤实现需求:
- 转换日期格式为标准日期类型,便于时间序列操作
- 按
name分组后,扩展出覆盖全局时间范围的月度日期序列 - 向前填充
value值,实现累积效果,同时将启动前的缺失值替换为0
完整代码如下:
df_processed <- df %>% # 转换字符日期为标准日期类型 mutate(date = ymd(date)) %>% # 按name分组,生成覆盖全局最早到最晚日期的月度序列 group_by(name) %>% expand(date = full_seq(c(min(df$date), max(df$date)), 1, "month")) %>% # 左连接原始数据,保留所有扩展出的日期记录 left_join(df %>% mutate(date = ymd(date)), by = c("name", "date")) %>% # 向下填充value,实现数值的累积保留 fill(value, .direction = "down") %>% # 将启动前的缺失值替换为0 replace_na(list(value = 0)) %>% ungroup()
运行后得到的df_processed即为符合要求的结构,可直接用于面积图绘制。
内容的提问来源于stack exchange,提问作者Tdebeus
相关产品推荐
相关产品推荐

