全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1768 6
2018-07-02
悬赏 20 个论坛币 已解决
字数有点多,求助各位大佬。图里是一个xts对象的list,数据是某只个股的净利润,由于以前的财报是半年报,没有一季度和三季度的,我想利用插值补齐这些数据。同时由于四季度的净利润是全年的净利润,包括前三个季度的净利润,所以我想将其按年分割,然后在每一年的四个季度数据里插值,插值后在一年的四个季度里差分,得到每个季度的净利润流量(例如本来二季度的净利润里包括一季度的净利润,这样我差分后得到实际第二个季度里公司的净利润),同时差分后保留第一个季度的值,不要变为NA值,最终得到一个只包含单个季度净利润的完整的时间序列。不知道我说清楚没有,还请大佬赐教。 微信截图_20180702134821.png

最佳答案

jgchen1966 查看完整内容

因为仅一个变量线性插补,用tidyverse中数据清理方法,实相当简单, 一将你数据转化为一个含三个变量的名为data的tibble型数集 :1是日期Date,2是股票代码code,3是利润profit 二:插补如下:假设年报数不缺 三:单季利润用 qprofit表示 ########## data%%group_by(code)%>%mutate(profit=if_else(month(Date)==1,lead(profit)/2, ## 一季报的为半年报的一半 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2018-7-2 13:51:40
因为仅一个变量线性插补,用tidyverse中数据清理方法,实相当简单,
一将你数据转化为一个含三个变量的名为data的tibble型数集 :1是日期Date,2是股票代码code,3是利润profit
二:插补如下:假设年报数不缺  
三:单季利润用 qprofit表示
   ##########
   data%<>%group_by(code)%>%mutate(profit=if_else(month(Date)==1,lead(profit)/2,      ## 一季报的为半年报的一半
                                                                      if_else(month(Date)==4,lead(profit,n=2)/2,  ## 半年报为年报的一半
                                                                        if_else(month(Date)==7,(lag(profit)+lead(profit))/2,  ## 三季报为半年报与年报的平均
                                                                                    profit)))) %>%   ## 年报不变
         mutate(qprofit=if_else(month(Date)==1,profit, profit-lag(profit)))%>%ungroup()  ## 一季不变,其他单季利润为当季与前季之差
####  如果,你还想用xts 型数集,你可用as.xts
####
现在,复杂的问题是:如果对所有财务三表(含间接现金表)缺失的中期财报的科目,进行线性插补,该 如何编程?? 同时要关注二个问题:一是2006年会计准则大变,2007年中期报,不能用2006年年底报,而要用2007年年初表
    二是 一些财表实全缺或缺部分,但却被设置为0 ,需找出它们并设置为NA。。。
若一个个,按上面补太麻烦,因为有200多个科目、、
  
   
二维码

扫码加我 拉你入群

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

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

2018-7-3 09:33:14
jgchen1966 发表于 2018-7-2 16:24
因为仅一个变量线性插补,用tidyverse中数据清理方法,实相当简单,
一将你数据转化为一个含三个变量的名 ...
      多谢大神,还有一个问题,因为只有前几年的数据是缺失一季度和三季度的,像您所说的方法,会不会把后面时间的一季度和三季度真实数据给覆盖了呀,求解
二维码

扫码加我 拉你入群

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

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

2018-7-3 11:19:26
lijiayao1370 发表于 2018-7-3 09:33
多谢大神,还有一个问题,因为只有前几年的数据是缺失一季度和三季度的,像您所说的方法,会不会把 ...
    虽然不会,只要条件设置正确,但是,误写程序也是常有的事,安全的做法,只将想插补的部分取出(当然要包含其前后值),补缺,补完再与其他的结合。。这样,既较安全,又节省计算时间,尤其当数据集很大,但补的只是一小部分。。。当然,这有点编程的技巧。。
     
二维码

扫码加我 拉你入群

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

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

2018-7-3 11:24:27
jgchen1966 发表于 2018-7-3 11:19
虽然不会,只要条件设置正确,但是,误写程序也是常有的事,安全的做法,只将想插补的部分取出(当然 ...
本人上面提供的程序中,漏缺了一个条件,希望你能自已补入此条件,就不会有你的担忧了,否则确实会“把后面时间的一季度和三季度真实数据给覆盖了”。。。哈,你瞧,忙中常会出错的。。因此,修补数据,必须,有验证方法,证明你是修补对的,否则,就不要轻易修补数据。。
二维码

扫码加我 拉你入群

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

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

2018-7-3 14:47:57
jgchen1966 发表于 2018-7-3 11:24
本人上面提供的程序中,漏缺了一个条件,希望你能自已补入此条件,就不会有你的担忧了,否则确实会“把后 ...
多谢大佬赐教,问题已经解决了。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群