楼主: shermanqin
1446 5

[原创博文] 请教如何将现有的数据按某些条件重复 [推广有奖]

  • 0关注
  • 0粉丝

本科生

13%

还不是VIP/贵宾

-

威望
0
论坛币
103 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2220 点
帖子
44
精华
0
在线时间
90 小时
注册时间
2007-7-31
最后登录
2017-3-28

楼主
shermanqin 发表于 2011-9-6 12:24:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
最近在处理季度基金股东变更数据时,遇到个问题:
因基金如果没有变动,则该季度股东数据没有记录,
但是为了比较和分析,需要将缺省记录的数据,根据不同基金编码以最后一个变动报告日的记录进行填充,
同时修改报告的年份和季度。不知SAS是否可以实现这个工作。

具体例子见附件,数据修改前文件为原始文件,
数据修改后文件为希望完成的结果。

多谢大家不吝赐教。
二维码

扫码加我 拉你入群

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

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

关键词:数据修改 最后一个 如何 股东 记录

数据修改后.xlsx
下载链接: https://bbs.pinggu.org/a-957932.html

14.4 KB

数据修改前.xlsx

11.27 KB

沙发
shermanqin 发表于 2011-9-8 21:01:03
没有同志会做吗?哎~

藤椅
按时地方 发表于 2011-9-8 21:07:09
我是新手,提供一个思路
先按年和季度排序
然后
data b;
set a;
by year quarter;
if stockholder=. then stockholder=lag(stockholder);
run;

板凳
shermanqin 发表于 2011-9-13 13:01:55
我试了,好像不对。还是谢谢了。

报纸
soporaeternus 发表于 2011-9-13 14:03:39
  1. data a;
  2.         input code:$3. year qtr holder:$8.;
  3.         end_date=intnx("QTR",yyq(year,qtr),0,"END");
  4.         format end_date yymmdd10.;
  5.         datalines;
  6. 001 2001 1 a
  7. 001 2001 1 b
  8. 001 2001 4 a
  9. 001 2002 2 b
  10. 001 2002 4 b
  11. 001 2002 4 c
  12. 002 2001 1 d
  13. 002 2003 2 d
  14. 002 2003 2 c
  15. ;
  16. run;

  17. data b;
  18.         do year=2001 to 2003 by 1;
  19.                 do qtr=1 to 4;
  20.                         end_date=intnx("QTR",yyq(year,qtr),0,"END");
  21.                         output;
  22.                 end;
  23.         end;
  24.         format end_date yymmdd10.;
  25. run;

  26. proc sql;
  27.         create table c as
  28.                 select
  29.                         a.code
  30.                         ,a.year
  31.                         ,a.qtr
  32.                         ,b.holder
  33.                 from (
  34.                 select
  35.                         b.code
  36.                         ,a.*
  37.                         ,max(b.end_date) as end_date1 format=yymmdd10.
  38.                 from
  39.                         b a
  40.                 left join
  41.                         a b
  42.                 on
  43.                         a.code=b.code
  44.                         and a.end_date>=b.end_date

  45.                 group by
  46.                         b.code
  47.                         ,a.year
  48.                         ,a.qtr
  49.                         ,a.end_date
  50.                         ) a
  51.                 inner join
  52.                         a b
  53.                 on
  54.                         a.code=b.code
  55.                         and a.end_date1=b.end_date
  56.                 order by
  57.                         a.code
  58.                         ,a.year
  59.                         ,a.qtr
  60.         ;
  61. quit;
复制代码
仅提供一个思路
b表是你需要的整个code+时间窗的全量,我这里偷懒了,姑且认为所有code是一样的......
Let them be hard, but never unjust

地板
shermanqin 发表于 2011-9-16 20:55:27
多谢多谢,我看看先

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 13:28