楼主: burnpark
1486 2

proc iml问题 [推广有奖]

  • 1关注
  • 2粉丝

已卖:1份资源

讲师

21%

还不是VIP/贵宾

-

威望
0
论坛币
2979 个
通用积分
6.6000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4270 点
帖子
128
精华
0
在线时间
591 小时
注册时间
2009-3-17
最后登录
2024-10-13

楼主
burnpark 发表于 2014-3-12 13:23:37 |AI写论文
300论坛币
  1. proc iml;
  2. use X1;
  3. read all;
  4. new_ac=J(500,1,0);
  5. new_d_ar=J(500,1,0);
  6. near=J(500,3,10000);

  7. do i=1 to 500;
  8. new_ac[i,1]=ac[i,1];       
  9. new_d_ar[i,1]=d_ar[i,1];
  10. diffni=abs(ni-ni[i,1]);       
  11. diffni[i,1]=100;       

  12. if revman[i,1]=1 | exman[i,1]=1 then do;
  13. inds=indust[i,1];               
  14. ye=year[i,1];       
  15. do k=1 to 500;       
  16. if indust[k,1]=inds & year[k,1]=ye then near[k,1]=diffni[k,1];         
  17. if indust[k,1]=inds & year[k,1]=ye then near[k,2]=ac[k,1];        
  18. if indust[k,1]=inds & year[k,1]=ye then near[k,3]=d_ar[k,1];       

  19. end;


  20. a=near[>:<,1];
  21. new_ac[i,1]=near[a,2];
  22. new_d_ar[i,1]=near[a,3];
  23. end;
  24. end;

  25. result=new_ac || new_d_ar;

  26. Create new  from result[colname={new_ac new_d_ar}];
  27. Append from result;
  28. Close new;       

  29. quit;
复制代码
上面的程序中想要将“a=near[>:<,1]; ”相应的ID另存为数据集,请问要怎么修改?

最佳答案

intheangel 查看完整内容

不太懂iml语句,如果a在矩阵模块里是个矩阵的话,我用宏把它每个都导了出来,然后set到了一起 data a; input a; run; %macro a; proc iml; use X1; read all; new_ac=J(500,1,0); new_d_ar=J(500,1,0); near=J(500,3,10000); %do i=1 %to 500; new_ac=ac; new_d_ar=d_ar; diffni=abs(ni-ni); diffni=100; if revman=1 | exman=1 then do; inds=indust; ...
关键词:ROC RevMan RevMa near Dust Create result 程序

沙发
intheangel 学生认证  发表于 2014-3-12 13:23:38
不太懂iml语句,如果a在矩阵模块里是个矩阵的话,我用宏把它每个都导了出来,然后set到了一起



data a;
input a;
run;

%macro a;
proc iml;
use X1;
read all;
new_ac=J(500,1,0);
new_d_ar=J(500,1,0);
near=J(500,3,10000);

%do i=1 %to 500;
new_ac[i,1]=ac[i,1];        
new_d_ar[i,1]=d_ar[i,1];
diffni=abs(ni-ni[i,1]);        
diffni[i,1]=100;        

if revman[i,1]=1 | exman[i,1]=1 then do;
inds=indust[i,1];               
ye=year[i,1];        
do k=1 to 500;        
if indust[k,1]=inds & year[k,1]=ye then near[k,1]=diffni[k,1];         
if indust[k,1]=inds & year[k,1]=ye then near[k,2]=ac[k,1];         
if indust[k,1]=inds & year[k,1]=ye then near[k,3]=d_ar[k,1];        

end;


a=near[>:<,1];

create a_&i from a[colname=a];
append from a;
close a;

new_ac[i,1]=near[a,2];
new_d_ar[i,1]=near[a,3];
end;
%end;
result=new_ac || new_d_ar;

Create new  from result[colname={new_ac new_d_ar}];
Append from result;
Close new;        
quit;

%do i=1 %to 500;
data a;
set a a_&i;
run;
%end;

%mend;

%a;



我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

藤椅
burnpark 发表于 2014-3-19 04:29:56
intheangel 发表于 2014-3-12 13:23
不太懂iml语句,如果a在矩阵模块里是个矩阵的话,我用宏把它每个都导了出来,然后set到了一起
宏运行没有成功,不过感谢你的热心帮助

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 15:33