楼主: greenfish_7
4996 4

[问答] SAS 如何找出变量中的最小值,变量的下标是变化的 [推广有奖]

  • 0关注
  • 0粉丝

初中生

76%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
130 点
帖子
21
精华
0
在线时间
13 小时
注册时间
2011-5-3
最后登录
2016-12-22

楼主
greenfish_7 发表于 2013-5-22 11:19:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data B;
set A;
format pfprc best7.4;
array d(855) d_1--d_855;
pfprc=min(of d(dayno)-d(dayno+89));
run;

我把变量存在了数组d(j)中,每个观测的dayno都是不同的,想请问如何找出一行中最小的变量?min(of d_1-d_855)是可以的,但是如何采用数组来表示这个下标,因为每个观测要查找的范围都是不同的。。
请求高人解答!
二维码

扫码加我 拉你入群

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

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

关键词:最小值 format array FORMA 高人解答 如何

本帖被以下文库推荐

沙发
boe 发表于 2013-5-22 12:31:21
不知理解得对不对:
data test;
  input x1 x2 x3 x4;
  datalines;
1 2 43 5
34 3 5 3
1 4 6 6
3322 0 0 4
;
run;
data need;
  set test;
  array _x _numeric_;
  do i=1 to dim(_x);
    if _x(i)=min(of x:) then do;
   min_x=_x(i);
      min_x_var=vname(_x(i));
end;
  end;
  drop i;
run;
如果最小值有两个以上,变量名只能输出最后一个。
Gorgeous girl , I love !

藤椅
邓贵大 发表于 2013-5-22 21:07:36
I don't think dynamic arrays are supported in min/max funciton.
  1. data B;
  2. set A;
  3. format pfprc best7.4;
  4. array d(855) d_1--d_855;
  5. array _d[855];
  6. *set _d[*]=.;
  7. call pokelong(repeat(put(., rb8., dim(_d)-1), addrlong(_d[1]), 8*dim(_d));
  8. *set _d[dayno]=d[dayno], ..., _d[dayno+89]=d[dayno+89];
  9. call pokelong(peekclong(addrlong(d[dayno]), 8*90), addrlong(_d[dayno]), 8*90);
  10. pfprc=min(of _d[*]);
  11. run;
复制代码
Be still, my soul: the hour is hastening on
When we shall be forever with the Lord.
When disappointment, grief and fear are gone,
Sorrow forgot, love's purest joys restored.

板凳
可~乐 发表于 2013-5-22 21:08:40
  1. data test;
  2. input x1 x2 x3 x4 _from _to;
  3. /*_from和_to代表查找范围*/
  4. cards;;
  5. 1 2 3 2 1 4
  6. 2 3 5 3 2 4
  7. 2 4 4 2 3 4
  8. ;
  9. run;

  10. data want;
  11.         set test;
  12.         length varname  $ 50;
  13.         array temp(4) x1-x4;
  14.         do i=_from to _to;
  15.                 temp_min=temp(_from);
  16.                 if temp(i)<=temp_min then temp_min=temp(i);/*temp_min为最小值*/
  17.                 if temp_min=temp(i) then varname=catx("",varname,vname(temp(i)));/*varname为变量的名称*/
  18.         end;
  19.         drop i;
  20. run;
  21.          
复制代码

报纸
lqwoailuo 发表于 2013-11-12 14:48:10

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

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