【发布时间】:2020-08-19 12:13:08
【问题描述】:
我面临的一个小问题。这里的理想化例子:
我有一个数据框,其中记录了对保险单的value 进行更改的日期。这看起来像这样:
df <- data.frame(policy_no = c(1, 1, 1, 1, 2, 2, 2),
date_stamp = as.Date(c("2020-01-15", "2020-04-03", "2020-05-31", "2020-07-22", "2020-01-05", "2020-03-17", "2020-06-04" )),
value = c(1000, 2000, 3000, 2000, 500, 1000, 500))
我有两个策略,policy_no 1 和 2。对于每个策略,我想编写一些代码来告诉我每个月 1 日 value 项目的状态。所以我的输出看起来像
df_output <- data.frame(policy_no = c(rep(1, 8), rep(2, 8)),
as_at_date = c(seq(as.Date("2020-01-01"), by = "month", length.out = 8), seq(as.Date("2020-01-01"), by = "month", length.out = 8)),
value = c(NA, 1000, 1000, 1000, 2000, 3000, 3000, 2000, NA, 500, 500, 1000, 1000, 1000, 500, 500))
显然我可以编写一个循环来执行此操作(对于每个policy_no,对于每个as_at_date,给我value 以获得date_stamp <= as_at_date 的最新快照),但这会很慢而且很笨重.我可以以某种方式将其矢量化吗?
特别欢迎基于tidyverse 的方法,但无论如何感谢任何建议。
非常感谢。
【问题讨论】: