作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS资料处理
时间Sun Feb 8 23:28:50 2009
既然你一定要用这种方法
proc sort data=file;by sales;
run;
data file;
set file nobs=xx;
if _n_/xx<=0.2 then Gsale=1;
if 0.2<_n_/xx<=0.4 then Gsale=2;
...;
run;
这样就分好组了
请记得将不同年度的资料分开
如果可以 自己查一下proc rank
※ 引述《chinghsi (Where are you)》之铭言:
: 我的资料可以简化的如下显示:
: ID Name Year Sales Control
: 1311 A 200712 12345 1.25
: 1311 A 200612 9999 1.26
: 1477 B 200712 95863 1.27
: 1477 B 200612 5555 1.28
: 2544 C 200712 7065 1.29
: 2544 C 200612 10243 1.30
: 4055 D 200712 9123 1.31
: 4055 D 200612 9023 1.32
: 5123 E 200712 12352 1.33
: 5123 E 200612 23412 1.34
: 现在想把资料根据Sales的大小分成五组
: (假设资料有一百笔,则最大的1-20笔为第一组,21-40为第二组...81-100为第五组)
: 作组内资料的比较
: 我的购想一是先把资料根据Sales的大小排序
: 再把它切成五组
: 以这里的例子来看,排序如下
: 再把它两个两个分成一组
: ID Name Year Sales Control
: 1477 B 200712 95863 1.27
: 5123 E 200612 23412 1.34
: 5123 E 200712 12352 1.33
: 1311 A 200712 12345 1.25
: 2544 C 200612 10243 1.30
: 1311 A 200612 9999 1.26
: 4055 D 200712 9123 1.31
: 4055 D 200612 9023 1.32
: 2544 C 200712 7065 1.29
: 1477 B 200612 5555 1.28
: 不过确不知道 分组的语法应该要如何写
: 我的购想二是可以靠PROC UNIVARIATE找到第20百分位数,第40百分位数,...第80百分位数
: 然後再根据条件式(IF)来帮忙分组
: ID Name Year Sales Control Group
: 1311 A 200712 12345 1.25 2
: 1311 A 200612 9999 1.26 3
: 1477 B 200712 95863 1.27 1
: 1477 B 200612 5555 1.28 5
: 2544 C 200712 7065 1.29 5
: 2544 C 200612 10243 1.30 3
: 4055 D 200712 9123 1.31 4
: 4055 D 200612 9023 1.32 4
: 5123 E 200712 12352 1.33 2
: 5123 E 200612 23412 1.34 1
: 接着就可以利用PROC MEANS
: CLASS
: BY
: 或PROC UNIVARIATE
: BY
: 做组内资料的比较了
: 可是也是卡在 不知道要如何把第20百分位数,第40百分位数,...第80百分位数 输出来
: 请问大家
: 这两个购想的语法,该如何写呢
: 谢谢大家的帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.171.243
1F:推 chinghsi:感谢板大 先跑得出来 再试试 PROC RANK :) 02/09 00:03
2F:推 chinghsi:nobs 有啥作用? 02/09 00:07
3F:推 chinghsi:感觉上应该是x/_n_ 而不是_n_/x 02/09 11:49
4F:→ chinghsi:还在测试中 目前跑出来 Gsale 全部都是1 XD 02/09 11:49
5F:推 chinghsi:找到都是1的原因 _n_在第一笔是1 第二笔是二不是总样本数 02/09 12:07
※ 编辑: tew 来自: 61.231.187.145 (02/09 12:30)
6F:→ tew:打错了是_n_/xx才对 02/09 12:31