我有一个名为dat的桌子/小物件,上面有办公大楼中套房的平方英尺历史记录。这些SF随时间变化。
library(tidyverse)
library(lubridate)
dat
# A tibble: 12 x 4
BLDGID SUITID EFFDATE SQFT
<chr> <chr> <date> <dbl>
1 2828 100 2018-09-01 547
2 2828 100 2011-05-31 547
3 2828 100 2010-01-02 549
4 2828 100 2010-01-01 549
5 2828 100 2009-11-01 91686
6 2828 100 2007-01-01 114607
7 2828 100 2000-01-01 137484
这是我的可重复示例数据的子集(仅1个建筑物和2个单位):
dat <-
structure(list(BLDGID = c("2828", "2828", "2828", "2828", "2828",
"2828", "2828", "2828", "2828", "2828", "2828", "2828"), SUITID = c("100",
"100", "100", "100", "100", "100", "100", "1000", "1000", "1000",
"1000", "1000"), EFFDATE = structure(c(17775, 15125, 14611, 14610,
14549, 13514, 10957, 14914, 14611, 14610, 12965, 11231), class = "Date"),
SQFT = c(547, 547, 549, 549, 91686, 114607, 137484, 12000,
22921, 22921, 547, 756)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -12L))
没有开始日期和结束日期,但是EFFDATE列中有此信息。此字段基本上表示新SF生效的日期。因此,从2009-11-01到2009-12-31,SF 100为91,686。然后,SF更改为549 SF(从2010年1月1日开始)。
我想获取这些信息并生成一个小标题,以显示一段时间内的实际金额。
所需的输出看起来像这样:
# A tibble: 4 x 4
BLDGID SUITID dates actual_sf
<chr> <chr> <date> <dbl>
1 2828 100 2009-11-01 91686
2 2828 100 2009-12-01 91686
3 2828 100 2010-01-01 549
4 2828 100 2010-02-01 549
我想我需要创建一个带有日期的小标题。
my_dates <- tibble(dates = ymd('2009-11-01') + months(0:4))
my_dates
# A tibble: 5 x 1
dates
<date>
1 2009-11-01
2 2009-12-01
3 2010-01-01
4 2010-02-01
5 2010-03-01
然后加入dat到my_dates中,但是我无法弄清楚这可能如何工作。