大家好,我写了一个程序,如下:
data a;
input n1 x1 s1 n2 x2 s2;
cards;
15 4.22 0.47 12 4.53 0.44
31 3.5 0.5 33 3.8 0.8
41 4.14 0.7 41 4.18 0.7
22 4.7 1.12 22 4.82 0.91
25 4.71 0.73 24 4.78 0.96
;
run;
data b;
set a;
vi=(((s1)**2)/((n1)*((x1)**2)))+(((s2)**2)/((n2)*((x2)**2)));
wi=1/vi;
run;
proc means data=b noprint;
var vi;
output out=c sum=wi_sum;
run;
data D;
merge b c;
tvi=vi+wi_sum;
run;
现在的问题是,在数据集D中,我如何能让vi都加上同一个wi_sum(这个例子中,wi_sum的值为0.0118387096),这里,wi_sum由前面的程序得出。按照现在我写这个程序,只有vi的第一行加上了wi_sum,其他的默认为wi_sum除了第一列外都为空值。麻烦高手指点一下如何解决此问题?