楼主: serenaakh
1672 5

[原创博文] 关于sas程序的两个问题~ 求各位帮帮忙 如何求出 各个企业前五年的中位数再把他们排序 [推广有奖]

  • 4关注
  • 1粉丝

本科生

90%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
102 点
帖子
115
精华
0
在线时间
77 小时
注册时间
2010-10-14
最后登录
2016-5-30

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
96.jpg
我想用proc means求DP,cev, net_cev, sg的中位数,
但不是单纯的求,是求每个企业前五年的中位数,再把这些中位数排序(从大到小)
所以样本企业必须要六年以上,
怎么能把 未满六年的企业给 去除~
但是还能把去除的企业保存在另一个文件里~

我的数据 应该是1981到2010年间的,但是由于很多公司不是从那么早开始建立的,
所有 各个企业 从各个年度开始的都有~
我以我不会弄~
拜托各位高手了~

先谢谢~~
二维码

扫码加我 拉你入群

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

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

关键词:sas程序 中位数 means mean cev 中位数 程序 如何 样本

回帖推荐

chendonghui1987 发表于2楼  查看完整内容

options mlogic mprint symbolgen source; data a; input coname $ code6 $ date dp cev net_cev age sg; datalines; 1 90470 2004 13.001 252.0 252.063 15 23.5 1 90470 2005 13.001 252.0 252.063 15 23.5 1 90470 2006 13.001 252.0 252.063 15 23.5 1 90470 2007 13.001 252.0 252.063 15 23.5 1 90470 2008 13.001 252.0 252.063 15 23.5 1 90470 2009 13.001 252.0 252.063 15 23.5 1 90470 2010 13.001 25 ...

options mlogic mprint symbolgen source;

data a;
        input coname $ code6 $ date dp cev net_cev age sg;
        datalines;
1 90470 2004 13.001 252.0 252.063 15 23.5
1 90470 2005 13.001 252.0 252.063 15 23.5
1 90470 2006 13.001 252.0 252.063 15 23.5
1 90470 2007 13.001 252.0 252.063 15 23.5
1 90470 2008 13.001 252.0 252.063 15 23.5
1 90470 2009 13.001 252.0 252.063 15 23.5
1 90470 2010 13.001 252.0 252.063 15 23.5
2 90471 2003 13.001 252.0 252.063 15 23.5
2 90471 2004 13.001 252.0 252.063 15 23.5
2 90471 2005 13.001 252.0 252.063 15 23.5
2 90471 2006 13.001 252.0 252.063 15 23.5
2 90471 2007 13.001 252.0 252.063 15 23.5
2 90471 2008 13.001 252.0 252.063 15 23.5
2 90471 2009 13.001 252.0 252.063 15 23.5
2 90471 2010 13.001 252.0 252.063 15 23.5
3 90472 2003 13.001 252.0 252.063 15 23.5
3 90472 2004 13.001 252.0 252.063 15 23.5
3 90472 2005 13.001 252.0 252.063 15 23.5
3 90472 2006 13.001 252.0 252.063 15 23.5
3 90472 2007 13.001 252.0 252.063 15 23.5
3 90472 2008 13.001 252.0 252.063 15 23.5
4 90473 2003 13.001 252.0 252.063 15 23.5
4 90473 2004 13.001 252.0 252.063 15 23.5
5 90474 2003 13.001 252.0 252.063 15 23.5
5 90474 2004 13.001 252.0 252.063 15 23.5
5 90474 2005 13.001 252.0 252.063 15 23.5
5 90474 2006 13.001 252.0 252.063 15 23.5
5 90474 2007 13.001 252.0 252.063 15 23.5
5 90474 2008 13.001 252.0 252.063 15 23.5
;
run;



proc sql noprint;
        /*企业数据要在6年到6年以上的*/
        create table work.b as
                select t.*,count(t.coname) as cnt
                from work.a as t
                group by t.coname
                having cnt >= 6
                order by t.coname,t.date;
               
        /*企业数据不到6年的*/
        create table work.c as
                select t.* ,count(t.coname) as cnt
                from work.a as t;
                group by t.coname
                having cnt < 6
                order by t.coname,t.date;

quit;

/*中位数*/
proc means data = work.b noprint  chartype qmethod=os nonobs median ;
        var Dp cev net_cev sg;
        output out=work.d median()=
                / autoname autolabel inherit;
run;

/*转置为了排序*/
proc transpose data = work.d out = work.e;
        var Dp_median cev_median net_cev_median sg_median;
run;
quit;

/*排序*/
proc sql noprint;
        create table work.f as
                select _name_,col1
                from work.e
                order by col1;
quit;

使用道具

数据集work.c是过滤掉的数据,你可以用sas导出就行了

使用道具

希望对你有所帮助,不过还是应该你看会了,自己不看代码,凭着自己的理解去写,这样对你提高会有很大帮助.

使用道具

报纸
serenaakh 发表于 2012-4-6 10:21:16 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-4-6 10:06
数据集work.c是过滤掉的数据,你可以用sas导出就行了
感恩~感恩~
您帮我太多了~
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

使用道具

地板
serenaakh 发表于 2012-4-6 10:23:38 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-4-6 10:06
数据集work.c是过滤掉的数据,你可以用sas导出就行了
太感恩了~
就是不会弄 过滤掉的这一步
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 00:07