簡體   English   中英

如何計算13個月前的數據滾動

[英]How to calculate data rolling 13 months ago

我希望獲得13個月的滾動數據並在另一列中進行分配。

我想找出每13個月內最舊期間的資產值。 我當前正在使用的代碼正在查找13個月滾動期的min(Assets) 相反,我想要最古老的月份的資產。 在此方面的任何幫助將不勝感激。 因此在此示例中,對於Group__C == Eperiod == 6/1/2018 ,我希望Month13Asset顯示22175.618而不是21059.052

x <- x %>% 
  arrange(Group__c, Fund, Period) %>% 
  group_by(Group__c, Fund) %>% 
  mutate(Month13Asset=RcppRoll::roll_min(x=Assets,13, align="right", fill=NA))

# Group__c          Fund    Period  Assets  Month13Asset
# A   FundA 8/1/2018    0   NA
# B   FundA 8/1/2018    0   NA
# D FundA   8/1/2018    0   NA
# D FundA   9/1/2018    6973.97 NA
# D FundA   10/1/2018   6870.799    NA
# D FundA   11/1/2018   6132.729    NA
# D FundA   12/1/2018   6347.007    NA
# D FundA   1/1/2019    5664.626    NA
# D FundA   2/1/2019    6292.03 NA
# D FundA   3/1/2019    6705.801    NA
# D FundA   4/1/2019    6802.498    NA
# D FundA   5/1/2019    7056.608    NA
# E FundA   6/1/2017    22175.618   NA
# E FundA   7/1/2017    21263.086   NA
# E FundA   8/1/2017    21207.543   NA
# E FundA   9/1/2017    21059.052   NA
# E FundA   10/1/2017   21505.484   NA
# E FundA   11/1/2017   22293.494   NA
# E FundA   12/1/2017   22938.228   NA
# E FundA   1/1/2018    23104.586   NA
# E FundA   2/1/2018    23296.339   NA
# E FundA   3/1/2018    21539.104   NA
# E FundA   4/1/2018    24010.93    NA
# E FundA   5/1/2018    23965.739   NA
# E FundA   6/1/2018    24944.856   21059.052
# E FundA   7/1/2018    24944.856   21059.052
# E FundA   8/1/2018    25562.452   21059.052

Tidyverse方法:我使用dplyr::lag()將Assets數據偏移12行,並在使用dplyr::do()分組dplyr::do()其添加到數據框中。 僅當您的數據均勻分布並且沒有丟失的月份時,這才起作用。

library(dplyr)
library(lubridate)

x %>% 
  mutate(Period = mdy(Period)) %>%
  arrange(Group__c, Fund, Period) %>% 
  group_by(Group__c, Fund) %>% 
  do(
    mutate(., Month13Asset = lag(.$Assets, 12))
  )

   Group__c  Fund     Period    Assets Month13Asset
1         A FundA 2018-08-01     0.000           NA
2         B FundA 2018-08-01     0.000           NA
3         D FundA 2018-08-01     0.000           NA
4         D FundA 2018-09-01  6973.970           NA
5         D FundA 2018-10-01  6870.799           NA
6         D FundA 2018-11-01  6132.729           NA
7         D FundA 2018-12-01  6347.007           NA
8         D FundA 2019-01-01  5664.626           NA
9         D FundA 2019-02-01  6292.030           NA
10        D FundA 2019-03-01  6705.801           NA
11        D FundA 2019-04-01  6802.498           NA
12        D FundA 2019-05-01  7056.608           NA
13        E FundA 2017-06-01 22175.618           NA
14        E FundA 2017-07-01 21263.086           NA
15        E FundA 2017-08-01 21207.543           NA
16        E FundA 2017-09-01 21059.052           NA
17        E FundA 2017-10-01 21505.484           NA
18        E FundA 2017-11-01 22293.494           NA
19        E FundA 2017-12-01 22938.228           NA
20        E FundA 2018-01-01 23104.586           NA
21        E FundA 2018-02-01 23296.339           NA
22        E FundA 2018-03-01 21539.104           NA
23        E FundA 2018-04-01 24010.930           NA
24        E FundA 2018-05-01 23965.739           NA
25        E FundA 2018-06-01 24944.856     22175.62
26        E FundA 2018-07-01 24944.856     21263.09
27        E FundA 2018-08-01 25562.452     21207.54

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM