楼主: harlon1976
1799 2

[原创博文] 如何编写实现这个要求的SAS程序 [推广有奖]

  • 2关注
  • 27粉丝

版主

院士

54%

还不是VIP/贵宾

-

威望
1
论坛币
33781 个
通用积分
135.1232
学术水平
25 点
热心指数
39 点
信用等级
17 点
经验
59249 点
帖子
1928
精华
0
在线时间
4352 小时
注册时间
2005-8-27
最后登录
2025-12-9

楼主
harlon1976 发表于 2011-6-11 11:13:27 |AI写论文
50论坛币
我在IML中计算了两个数值分别用代码P1、P2表示,是后面程序中提取某个变量分位数使用的,然后利用univariate过程计算这两个数值指定的分位数,但是如何把P1和P2这两个代码表示的数值提取出来,即程序PCTLPTS=P1,P2;SAS显示这样写不行。注意不是直接把P1和P2两个数值的数字直接放在程序中。如何实现上述要求。或者等价地说,在IML中,如果现在有一批数据放在列向量Y中,如何提取Y的P1、P2表示的分位数。

关键词:sas程序 Univariate Variate 如何实现 如何提取 程序 如何

沙发
guoluo 发表于 2011-6-11 11:58:24
  1. proc iml;
  2. x = {20,40};
  3. y = {"p1","p2"};
  4. create point var{x,y};
  5. append;
  6. quit;

  7. data _null_;
  8.   set point end=final;
  9.   length value name $50;
  10.   retain value name;
  11.   value = catx(' ',value,x);
  12.   name = catx(' ',name,y);
  13.   if final then do;
  14.    call symputx('values',value);
  15.    call symputx('names',name);
  16.   end;
  17. run;

  18. proc univariate data=sashelp.class noprint;
  19. var weight;
  20. output out=out pctlpts = &values pctlpre = weight pctlname = &names;
  21. run;
复制代码
可以先用IML把矩阵输出成数据集,再赋值宏变量

藤椅
harlon1976 发表于 2011-6-11 14:16:32
这个程序有点复杂,有没有更简单一些的,谢谢楼上的程序。但你程序有个问题,就是事先P1、P2两个值是不知道的,是通过提交IML计算得到的中间结果,不是你事先指定的20和40。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 21:38