楼主: lp不认输
2507 1

[问答] R语言固定月份滚动求和 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
29711 个
通用积分
1.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
322 小时
注册时间
2013-6-1
最后登录
2024-8-21

楼主
lp不认输 发表于 2019-3-28 01:58:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我的数据大概是这样的:Stkcd是股票代码,包括所有A股,区间是2002年1月-2017年12月。(图中从6月开始的,因为股票代码为1的股票前几个月没数据)
我的问题是:对于每只股票,我要 求连续6个月滚动计算的n值的和。看了很多滚动窗口计算的例子,但基本上都是固定步长!我是固定时间间隔,因为很多股票某些月份并没有数据。虽然可以用for循环计算,但是真的太慢太慢了,我已经受够了,因为要经常使用。看下有没有人可以给点方法,感激不尽。方法使用的话,给你论坛币。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:固定时间间隔 股票代码 方法使用 固定时间 滚动窗口 R语言 R语言强化版 金融学 金融 实证资产定价

微信图片_20190328015057.png (12.75 KB)

微信图片_20190328015057.png

沙发
zhou1_20 发表于 2019-3-28 15:10:39
大致这样子把
  1. library(tidyverse)
  2. library(lubridate)

  3. #构造数据
  4. df=data.frame(date=Sys.Date()+months(cumsum(sample(1:2,20,replace = T))),
  5.                              n=rnorm(20,0.5,1))%>%
  6.   mutate(year=year(date),month=month(date))%>%
  7.      select(date,year,month,n)%>%
  8.      arrange(year,month)
  9. #建立固定时间分块指标
  10. nr=dim(df)[1];
  11. nrt=(df$year[nr]-df$year[1])*12+
  12.   ifelse(df$month[nr]-df$month[1]>0, df$month[nr]-df$month[1],0)

  13. if(nrt%%6>0){
  14.   id1 = c(df$date[1]+months(0:floor(nrt/6)*6),df$date[nr]+1)
  15. }else{
  16.   id1 = df$date[1]+months(0:floor(nrt/6)*6)
  17. }

  18. id2=cut(df$date,id1)
  19. levels(id2)=1:length(levels(id2))
  20. id3=as.numeric(as.vector(id2))
  21. id3[is.na(id3)]=max(id3,na.rm = T)+1
  22.          
  23. df$id = id3
  24. #分块求和
  25. df%>%group_by(id)%>%summarise(idn=n(),startdate=date[1],enddate=date[idn],n=sum(n))
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 13:24