楼主: hlfjacky
1210 2

SAS里怎么对公司分组 [推广有奖]

  • 2关注
  • 0粉丝

已卖:4份资源

大专生

83%

还不是VIP/贵宾

-

威望
0
论坛币
861 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
660 点
帖子
80
精华
0
在线时间
25 小时
注册时间
2013-1-13
最后登录
2020-4-21

楼主
hlfjacky 发表于 2014-2-12 11:54:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
SAS里怎么实现像STATA的这个分组功能(生成连续的公司代号):egen group=group(companyname) 谢谢先!
二维码

扫码加我 拉你入群

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

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

关键词:company compan Group Stata tata

沙发
jungsee 发表于 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
下载链接: https://bbs.pinggu.org/a-1492186.html

90.5 KB

需要: 5 个论坛币  [购买]

模拟数据

藤椅
hlfjacky 发表于 2014-3-6 06:22:01
辛苦了,非常感谢!我好好学习一下。

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

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