作者ivylouise (繁华中的宁静)
站内Statistics
标题[问题] 有关SAS对不同资料求N之一问
时间Fri Feb 27 08:26:58 2009
请问各位高手,
我该如何计算每个读入资料的样本数(n),再代入下面的原程式呢?
( 注:下面的程式後面有标明有使用到N的地方 )
因为我有好几千笔资料,若每次因为n不同而要改下面的N,实在很头大 Orz
昨晚想了几个办法,但似乎都不可行,所以上来请教各位高手们 ( 跪求~~~~ )
1.每个PRN档的原始资料大概长的如下,但每次读入的样本数(n)不尽相同。
64.49481
69.85545
69.83425
73.84243
65.98784
.
.
.
.
2.原程式部份,
%MACRO a (yyyyy,aaaaaaa,c);
data b;
%LET f=%str (%'f:\Dr Liu\&yyyyy\&aaaaaaa..prn%');
infile %unquote(&f);
input pot1-pot31; <<====== N=31
array pot {31} pot1-pot31; <<====== N=31
c=0;
do i=1 to 31; <<====== N=31
do j=i+1 to 31; <<====== N=31
b=pot(i)-pot(j);
e=abs(b);
a=e;
put a=;
diff=c+a;
c=diff;
end;
end;
put diff=;
sum=0;
do i=1 to 31; <<====== N=31
c=sum+pot(i);
sum=c;
end;
averg=sum/31; <<====== N=31
put averg=;
g=diff /(2*31*31*averg); <<====== N=31
put g;
run;
data C&c;
set b ;
if g=. then g='─';
Gini&c= g;
keep Gini&c;
run;
%MEND a;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.192.124.101
1F:→ west1996:把你的N也写成一个macro variable就好啦 02/27 09:36
2F:→ ivylouise:这样子不就要知道每个读入档案的N Orz 02/27 09:58
3F:推 chien533:写个有proc means的macro去算出每个档案的N,然後另存新 02/27 11:21
4F:→ ivylouise:不过...谢谢你的建议 02/27 11:21
5F:→ chien533:资料档,再用一个data step使用call symput去把新资料档 02/27 11:22
6F:推 tew:虽然你说样本数,可是就资料来看 似乎是变项数目 02/27 11:26
7F:→ chien533:里面的N存成巨集变数,然後用do loop去跑这些巨集变数 02/27 11:28
9F:推 tew:应该说 就你的input pot1 -pot31 02/27 11:29
10F:推 tew:这样子是变项数目 而非样本数 02/27 11:30
11F:→ ivylouise:谢谢CH大~~~感谢你的资料^^ 02/27 13:42
12F:→ ivylouise:t大..我是把资料转过来..类似像算这个变项的平方和 02/27 13:55
13F:推 tew:ㄜ..orz 那根本不需要用到这麽复杂的语法 02/27 16:53