根据单位历史记录表(使用dplyr)计算历史SF

时间:2019-11-27 18:25:41

标签: r join dplyr

我有一个名为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中,但是我无法弄清楚这可能如何工作。

0 个答案:

没有答案