全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10580 6
2016-12-20
SAS怎么取五分位数呢,好像是用proc rank,如果按年分组,对newx取五分位数,产生新的变量r_1,这样写程序对吗?ties=mean是干嘛的呢?

proc rank data=a out=b ties=mean groups=5;
          var newx;
          ranks r_1;
                  by year;
     run;

二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-21 04:54:53
分位数可以用univariate或capability求。对非常用的分位数,需要加入下列语句:
pctlpre=p
pctlpts=(分位数1,分位数2 ....);

这里有好多例子:http://www.ats.ucla.edu/stat/sas/faq/percentiles.htm

proc rank 是用来给数据排名次的,用它来求五分位数,我很怀疑是否可行。group虽然可以将你的数据分成5部分,但仅此而已,没有其他计算。

另外,ties=mean是对proc rank 遇到相同名次的一种处理方式,它其实有几个options,大概是这样滴,举个例子:假如你有5个数据,大小顺序是:3,8,8,11,15,排名是1 ... 5名。

ties=mean将显示1,2.5,2.5,4,5名。(这也是default方式,所以其实没必要写出来);

ties=low,将显示1,2,2,4,5。

ties=high,将显示1,3,3,4,5。

ties=dense,将显示1,2,2,3,4。(没有第5名。
二维码

扫码加我 拉你入群

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

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

2016-12-21 23:22:07
mich_ard 发表于 2016-12-21 04:54
分位数可以用univariate或capability求。对非常用的分位数,需要加入下列语句:
pctlpre=p
pctlpts=(分位 ...
我的意思是按照五分位数分成五组,就是会在原始数据后面增加一个变量prop,取五个值代表五组,你说的这个只能求出对应的数字,不能分组
二维码

扫码加我 拉你入群

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

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

2016-12-30 15:32:32
取出四个5分位数,然后left join到原数据表上,形成四个变量p20、p40、p60、p80
然后利用if var le p20 then group=1;else if var gt p20 and var le p40 then group=2巴拉巴拉
二维码

扫码加我 拉你入群

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

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

2016-12-30 15:32:46
取出四个5分位数,然后left join到原数据表上,形成四个变量p20、p40、p60、p80
然后利用if var le p20 then group=1;else if var gt p20 and var le p40 then group=2巴拉巴拉
二维码

扫码加我 拉你入群

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

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

2016-12-30 15:32:57
取出四个5分位数,然后left join到原数据表上,形成四个变量p20、p40、p60、p80
然后利用if var le p20 then group=1;else if var gt p20 and var le p40 then group=2巴拉巴拉
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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