全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3179 7
2009-10-12
比如由{2, 2, 2, 2, 5, 5, 1, 1, 1},得到{4, 2, 3},即4个2,2个5,3个1。

本人还是新手,不甚熟练。

谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-10-13 05:29:20
这个好像是mathematica里自带的一个功能,但是SAS里要算起来就不容易了,你可以用proc mean 这个过程来输出结果,会告诉你一共有几个值,没个值重复几次。但是结果不会表示成矩阵,只会显示在result目录里。要先把整个矩阵看成1个变量的多个观测来作。
二维码

扫码加我 拉你入群

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

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

2009-10-13 08:47:18
data a;
infile datalines dsd;   由于数据中的“,” 存在,所以采用这种读取数据的方式
input x@@;
cards;
2, 2, 2, 2, 5, 5, 1, 1, 1
;
proc freq noprint;   利用 proc freq 得到频数分布表 并保存在“freq”这个数据中
tables x/out=freq(keep= x COUNT);

proc iml;
use freq;
read all var{x count} into freq;   将 freq这个数据读进 iml环境下的向量,命名为freq
print freq[colname={x freq}];
quit;

你看看上面的程序是否时所要,有些罗嗦。 利用了data步所产生的数据在IML环境下的相互转换。
你所给的是个向量,如果是矩阵的话先转化为向量也就行了。
二维码

扫码加我 拉你入群

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

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

2009-10-13 09:11:05
proc iml;                                                                                                                              
m={2, 2, 2, 2, 5, 5, 1, 1, 1};                                                                                                         
u=t(unique(m));                                                                                                                        
n=j(nrow(u),1,0);                                                                                                                       
do i=1 to nrow(u);                                                                                                                     
  n[i]=sum(m=u[i]);                                                                                                                     
end;                                                                                                                                    
print m u n;                                                                                                                           
quit;
二维码

扫码加我 拉你入群

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

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

2009-10-13 09:13:02
结果:
M         U         N
2         1         3
2         2         4
2         5         2
2
5
5
1
1
1
二维码

扫码加我 拉你入群

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

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

2009-10-13 10:26:57
proc iml;                                                                                                                              
m={2
2, 2 2, 5 5, 1 1, 1 5};                                                                                                         
u=t(unique(m));                                                                                                                        
n=j(nrow(u),1,0);                                                                                                                       
do i=1 to nrow(u);                                                                                                                     
  n[i]=sum(m=u[i]);                                                                                                                     
end;                                                                                                                                    
print u n;                                                                                                                           
quit;

非常好
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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