w******w 发帖数: 362 | 1 有一个dataset,要求根据score从小到大平均分成N个bin, 要求编一个Macro,这样的
话,具体分成几组只要用相应的N运行一下那个macro就行了。
怎么写比较好啊?求指导…… |
d******9 发帖数: 404 | 2 it is not hard. You give a sample dataset first. |
s******r 发帖数: 1524 | 3 data score;
do score=1 to 88;
output;
end;
run;
%macro subgrp(set=,var=, grp=);
proc sort data=&set;by &var;run;
data _null_;set &set end=eof;
if eof then call symput ('total',_n_);
run;
%let step=%eval(&total/&grp);
%if %eval(&step*&grp) < &total %then %let step=%eval(&step+1);
%do i =0 %to %eval(&grp-1);
%let first_obs=%eval(&i*&step+1);
%let obs=%eval(&first_obs+&step -1);
data &set&i;set &set(firstobs=&first_obs obs=&obs);run;
%end;
%mend;
%subgrp(set=score,var=score, grp=5);
bz pls.
【在 w******w 的大作中提到】 : 有一个dataset,要求根据score从小到大平均分成N个bin, 要求编一个Macro,这样的 : 话,具体分成几组只要用相应的N运行一下那个macro就行了。 : 怎么写比较好啊?求指导……
|
h********o 发帖数: 103 | 4 Try this:
============
data test;
do x = 99 to 1 by -1;
output;
end;
run;
%macro split(inputdata, N, var);
proc sort data = &inputdata;
by &var;
run;
data _null_;
if 0 then set &inputdata nobs = count;
call symput("numobs", put(count,8.));
run;
%let m = %sysevalf(&numobs/&N, ceil);
%do i = 1 %to &N;
data test&i;
set &inputdata;
if %eval(&m*(&i-1)) < _N_ <= %eval(&m*&i);
run;
%end;
%mend;
%split(test,5,x); |
g****8 发帖数: 2828 | 5 why not just using PROC RANK? |
g****8 发帖数: 2828 | |
v*********0 发帖数: 941 | |
a*****3 发帖数: 601 | 8 问你个问题哈, 回答出来了有包子, 25伪币.
1. 为什么不直接用proc 实现 难道是为了传说中的...?
2. 你写的宏里面, 第一部分是data_step, 在宏看来,就是不可识别的字串了;后面一
部分是宏语句,宏facility可以处理的.
问题: 不是说宏应该比sas language先编译执行吗? 这样一来 岂不是后面那部分先
执行, 前面那部分后执行 ?
【在 s******r 的大作中提到】 : data score; : do score=1 to 88; : output; : end; : run; : %macro subgrp(set=,var=, grp=); : proc sort data=&set;by &var;run; : data _null_;set &set end=eof; : if eof then call symput ('total',_n_); : run;
|
D******n 发帖数: 2836 | 9 这是典型gains/lift charts的任务。proc rank不好的地方是,你不能force
overlapped bin, 第二不能搞有weight的data
【在 g****8 的大作中提到】 : why not just using PROC RANK?
|
g****8 发帖数: 2828 | 10 一般是什么情况的overlapped bin呀?
【在 D******n 的大作中提到】 : 这是典型gains/lift charts的任务。proc rank不好的地方是,你不能force : overlapped bin, 第二不能搞有weight的data
|
|
|
a*****3 发帖数: 601 | 11 买糕的 这年月大家都纷纷bso啊, 你儿子看什么呢? C什么? C++编程宝典?
【在 D******n 的大作中提到】 : 这是典型gains/lift charts的任务。proc rank不好的地方是,你不能force : overlapped bin, 第二不能搞有weight的data
|
g****8 发帖数: 2828 | 12 好像那是吃的吧
【在 a*****3 的大作中提到】 : 买糕的 这年月大家都纷纷bso啊, 你儿子看什么呢? C什么? C++编程宝典?
|
D******n 发帖数: 2836 | 13 1)女儿
2)燕麦
3)最恨C++
【在 a*****3 的大作中提到】 : 买糕的 这年月大家都纷纷bso啊, 你儿子看什么呢? C什么? C++编程宝典?
|
a*****3 发帖数: 601 | 14 不好意思....
明明是是帅哥的发型...
昨天去剃头..no.5 buz...效果就是这样滴..
【在 D******n 的大作中提到】 : 1)女儿 : 2)燕麦 : 3)最恨C++
|
g****8 发帖数: 2828 | 15 大牛顺便也讲解一下问题呀
【在 D******n 的大作中提到】 : 1)女儿 : 2)燕麦 : 3)最恨C++
|
D******n 发帖数: 2836 | 16 其实也没什么必要,就是有时候一个score value占了很多个obs, 一个score value占
两个bin,
用proc rank就合并了,其实也合理,可是有人就喜欢看着一个score value占两个bin。
【在 g****8 的大作中提到】 : 一般是什么情况的overlapped bin呀?
|
g****8 发帖数: 2828 | 17 这种情况的数据应该很少吧,这样的score bin就没什么意义了。
你说的那个weighted 我好像记得在proc rank 前面加一步就解决了。
bin。
【在 D******n 的大作中提到】 : 其实也没什么必要,就是有时候一个score value占了很多个obs, 一个score value占 : 两个bin, : 用proc rank就合并了,其实也合理,可是有人就喜欢看着一个score value占两个bin。
|
D******n 发帖数: 2836 | 18 like what?
【在 g****8 的大作中提到】 : 这种情况的数据应该很少吧,这样的score bin就没什么意义了。 : 你说的那个weighted 我好像记得在proc rank 前面加一步就解决了。 : : bin。
|
l*********s 发帖数: 5409 | 19 一看就知道你是帅哥啊
【在 D******n 的大作中提到】 : 1)女儿 : 2)燕麦 : 3)最恨C++
|
a*****3 发帖数: 601 | 20 你们家小朋友 目前我老还分不出男女..不过看起来像个boy.
【在 l*********s 的大作中提到】 : 一看就知道你是帅哥啊
|
s******r 发帖数: 1524 | 21 1。我忘了
2。不知道。
包子please.
1。其实真忘了,看楼主要macro就顺手写下去了。年纪大了,懒的记那么多。而且一天
到晚都是database,SAS只是后期和一些macro处理。
2。我觉着不能太相信SAS,要不就怎么解释不了
proc sql;sel b from t group by b;quit;run;
能给出无数个相同的b来,害得我已经有强迫症了。每次都写成
proc sql;sel distinct b from t group by b;quit;run;
我觉着宏先编译但并不执行。SAS预留了宏的位置,到执行的时候再读宏值。反正对于
SAS,我是早已放弃理解,只求所以然,不求之所以然。
【在 a*****3 的大作中提到】 : 问你个问题哈, 回答出来了有包子, 25伪币. : 1. 为什么不直接用proc 实现 难道是为了传说中的...? : 2. 你写的宏里面, 第一部分是data_step, 在宏看来,就是不可识别的字串了;后面一 : 部分是宏语句,宏facility可以处理的. : 问题: 不是说宏应该比sas language先编译执行吗? 这样一来 岂不是后面那部分先 : 执行, 前面那部分后执行 ?
|
G*******s 发帖数: 10605 | 22 用proc univariate里面输出的percentile值来做bin,我们大多时候都分成4组(
quartiles)做分析,稍微变化下就能分N组
【在 w******w 的大作中提到】 : 有一个dataset,要求根据score从小到大平均分成N个bin, 要求编一个Macro,这样的 : 话,具体分成几组只要用相应的N运行一下那个macro就行了。 : 怎么写比较好啊?求指导……
|