全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1188 2
2014-02-12
SAS里怎么实现像STATA的这个分组功能(生成连续的公司代号):egen group=group(companyname) 谢谢先!
二维码

扫码加我 拉你入群

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

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

全部回复
2014-2-20 22:26:10
我编写的这个代码比较繁琐,能够实现所有编号标识,希望高手进一步指点。

  data temp1;
  set a1;
  proc sort;
  by f2 f12;
  run;

  data temp2(keep=f2 f12 num_in_firm) ;
  set temp1;
  by f2;
  retain num_in_firm 0;
  if first.f2 then num_in_firm=1;
  else num_in_firm=num_in_firm+1;
  proc sort;
  by f2;
  run;

  data temp30(keep=f2 firm_id);
  set temp2;
  if num_in_firm ne 1 then delete;
  run;

  data temp3;
  set temp30;
  firm_id=_n_;
  proc sort;
  by f2;
  run;

  data temp4;
  merge temp2 temp3;
  by f2;
  run;

  proc sql;
  create table temp5 as
  select count(temp4.f2) as repeat_num, temp4.*
  from temp4
  group by f2
  order by firm_id,num_in_firm,repeat_num  ;
  quit;

  data temp6;
  set temp5;
  total_num=_n_;
  run;

  proc sql;
      create table want as
           select f2,firm_id, f12, num_in_firm,repeat_num,total_num
           from temp6;
           
   quit;

  proc datasets lib=work  nolist;
   delete temp1 temp2 temp3 temp30 temp4 temp5 temp6  /memtype=data;
  quit;




  /*首先将数据按照 股票代码+日期 联合排序 */

  /*f2代表公司股票代码, f12 代表日期  */

  /*firm_id 代表同一公司  按照股票代码编号 后产生的 连续标号*/

  /*num_in_firm 代表同一公司组内按照时间编号*/

  /*repeat_num 代表公司 重复出现的次数,或者是 每个公司记录的 总条数*/

  /*total_num 代表数据记录总的条数*/


附件列表
01.JPG

原图尺寸 53.45 KB

01.JPG

a1.xls

大小:90.5 KB

只需: 5 个论坛币  马上下载

模拟数据

二维码

扫码加我 拉你入群

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

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

2014-3-6 06:22:01
辛苦了,非常感谢!我好好学习一下。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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