全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2528 9
2012-05-30
我想问问各位sas前辈们。
我要对以下数据集做行,列的平均值,用array的二维数组做。
4564 93 97 96 89 92
8788 75 78 79 72 85
4458 64 67 75 72 76
3120 56 66 71 64 73
2525 92 99 98 98 97
3566 66 76 82 78 92
1980 78 75 79 64 81

我写的程序如下:
data two;
infile'E:\sas\in class 3\class.txt' ;
input @6  a1-a5/  @6 b1-b5/  @6 c1-c5 / @6 d1-d5/
@6 e1-e5/  @6 f1-f5/ @6 g1-g5 ;
array ave{7,5}a1-a5 b1-b5 c1-c5 d1-d5 e1-e5 f1-f5 g1-g5;
array row{7} h1-h7;
array column{5} l1-l5;
do i=1 to 5;
row{i}=(ave{i,1}+ave{i,2}+ave{i,3}+ave{i,4}+ave{i,5})/5;
row{i}=round(row{i},.1);
end;
do j=1 to 7;
column{j}=(ave{1,j}+ave{2,j}+ave{3,j}+ave{4,j}+ave{5,j}+ave{6,j}+ave{7,j})/7;
column{j}=round(column{j},.1);
end;
keep h1-h7 l1-l5;run;
proc print;run;

但是log里面就一直报错
ERROR: Array subscript out of range at line 590 column 21.

我想问下如何修改。谢谢大家。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-5-30 12:06:16
i =7,j =5不过array不应该这么用。京剧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-30 14:33:03
jingju11 发表于 2012-5-30 12:06
i =7,j =5不过array不应该这么用。京剧
谢谢,经调整后,无误。非常感谢。能顺便说下,array为什么不能这样用吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-30 14:44:54
你要把SAS Base当成R,Matlab用,复杂点就会很痛苦……而且那两种软件都有更简单的方法计算。
如果要用SAS做矩阵计算,建议学习IML。
如果只是为了计算基本的统计量,建议学习Base+STAT。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-30 15:18:11
zhangzachary 发表于 2012-5-30 14:44
你要把SAS Base当成R,Matlab用,复杂点就会很痛苦……而且那两种软件都有更简单的方法计算。
如果要用SAS做 ...
恩恩。谢谢给予中肯意见。我是刚刚迈入sas起步阶段。然后老师专门要练习array的用法。
再次感谢哈。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-1 07:37:26
I do it in a simple logic here.




data two;
array a(*) a1-a6;
array s(*) s1-s6;
retain num2;
keep row_col num mean;
infile cards eof=eof;
input a1 - a6;
row_col='ROW';
num+1;
s1+a1;s2+a2;s3+a3;s4+a4;s5+a5;s6+a6;
mean=mean( of a[*]);
num2=num;
output;

return;
eof:

  do num=1 to dim(a);
     row_col='COL';
     mean=s[num]/num2;
         output;
  end;

     
cards;
4564 93 97 96 89 92
8788 75 78 79 72 85
4458 64 67 75 72 76
3120 56 66 71 64 73
2525 92 99 98 98 97
3566 66 76 82 78 92
1980 78 75 79 64 81
;

proc print;run;
  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群