D******n 发帖数: 2836 | 1 想output一个data set,长得就像它的listing的output,却怎么也搞不出来,真头痛。
N
Variable N Miss Minimum Maximum
-----------------------------------------------------
x 8 0 0 1.0000000
y 8 0 0 1.0000000 |
q**j 发帖数: 10612 | 2 ods
痛。
【在 D******n 的大作中提到】 : 想output一个data set,长得就像它的listing的output,却怎么也搞不出来,真头痛。 : N : Variable N Miss Minimum Maximum : ----------------------------------------------------- : x 8 0 0 1.0000000 : y 8 0 0 1.0000000
|
D******n 发帖数: 2836 | 3 不行
【在 q**j 的大作中提到】 : ods : : 痛。
|
k*******a 发帖数: 772 | |
a*****3 发帖数: 601 | 5 似乎也不行 - correct me if i'm wrong.
【在 k*******a 的大作中提到】 : 可以试试 proc univariate
|
k*******a 发帖数: 772 | 6 嗯是挺奇怪的,不过可以加一个 proc transpose就可以了
比如output的dataset是a
proc transpose data=a out=b;
var x y;
id _stat_;
run; |
D******n 发帖数: 2836 | 7 means or univariate?
how to write the step?
【在 k*******a 的大作中提到】 : 嗯是挺奇怪的,不过可以加一个 proc transpose就可以了 : 比如output的dataset是a : proc transpose data=a out=b; : var x y; : id _stat_; : run;
|
k*******a 发帖数: 772 | 8 不好意思,那个好像也不行,不过你可以先 reshape data比如
data a;
do i=1 to 8;
x=1; y=1;output;
end;
run;
data b(keep=var z);
set a(rename=(x=z) in=inx) a(rename=(y=z) in=iny);
if inx then var='x';
else if iny then var='y';
run;
proc means data=b noprint;
by var;
var z;
output out=c(drop=_freq_ _type_) n=n nmiss=nmiss min=min max=max;
run;
【在 D******n 的大作中提到】 : means or univariate? : how to write the step?
|
D******n 发帖数: 2836 | 9 this way works, but stacking data is not that efficient. I came up with this
, just do more data manipulation on the means output.
----------------------------------------------->
data a1;
input x_1 y z weight;
datalines;
1 0 4 0.1
1 0 4 0.5
0 1 1 0.2
0 1 1 0.2
1 0 2 0.1
0 1 2 0.5
1 0 3 0.2
0 1 3 0.2
;
run;
proc means data=a1 noprint;
var x_1 y z;
weight weight;
output out=b sum= mean= nmiss=/autoname;
run;
proc transpose data=b(drop= _type_ _freq_) out=b2;run;
data b2;
set b2;
pos = find(_name_,"_",-999);
var_name = substr(_name_,1,pos-1);
stat = substr(_name_,pos+1);
drop pos _name_;
run;
proc sort data = b2;
by var_name stat;
run;
proc transpose data = b2 out=b3(drop=_name_);
by var_name;
id stat;
run;
proc print data = b3;run;
【在 k*******a 的大作中提到】 : 不好意思,那个好像也不行,不过你可以先 reshape data比如 : data a; : do i=1 to 8; : x=1; y=1;output; : end; : run; : data b(keep=var z); : set a(rename=(x=z) in=inx) a(rename=(y=z) in=iny); : if inx then var='x'; : else if iny then var='y';
|
d*******o 发帖数: 493 | 10 PROC SQL may be better though |
|
|
o****o 发帖数: 8077 | 11 也许可以试试PROC STDIZE
data a1;
input x_1 y z weight;
datalines;
1 0 4 0.1
1 0 4 0.5
0 1 1 0.2
0 1 1 0.2
1 0 2 0.1
0 1 2 0.5
1 0 3 0.2
0 1 3 0.2
;
run;
ods select none;
proc stdize data=a1 out=_null_ outstat=stat pctlpts=0 100;
var x_1 y z ;
weight weight;
run;
ods select all;
proc transpose data=stat out=stat2 ;
id _type_;
run;
痛。
【在 D******n 的大作中提到】 : 想output一个data set,长得就像它的listing的output,却怎么也搞不出来,真头痛。 : N : Variable N Miss Minimum Maximum : ----------------------------------------------------- : x 8 0 0 1.0000000 : y 8 0 0 1.0000000
|
D******n 发帖数: 2836 | 12 this is awesome;
【在 o****o 的大作中提到】 : 也许可以试试PROC STDIZE : data a1; : input x_1 y z weight; : datalines; : 1 0 4 0.1 : 1 0 4 0.5 : 0 1 1 0.2 : 0 1 1 0.2 : 1 0 2 0.1 : 0 1 2 0.5
|
l*********s 发帖数: 5409 | |
A*******s 发帖数: 3942 | 14 我记得以前搞proc freq好像也搞不出来和listing长得像的dataset |
s**********0 发帖数: 41 | 15 一楼正解
直接proc means里ods summary=datasetname就行 |
s**********0 发帖数: 41 | 16 ods output summary=datasetname
【在 s**********0 的大作中提到】 : 一楼正解 : 直接proc means里ods summary=datasetname就行
|