楼主: jason_udu
1364 3

[问答] array的应用问题 [推广有奖]

  • 1关注
  • 1粉丝

已卖:393份资源

硕士生

16%

还不是VIP/贵宾

-

威望
0
论坛币
672 个
通用积分
9.4462
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
2717 点
帖子
57
精华
0
在线时间
153 小时
注册时间
2007-3-26
最后登录
2025-10-8

楼主
jason_udu 发表于 2013-4-15 14:25:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
SAS9.2提供了自定义函数的功能,而且函数定义中自变量可以使用矩阵进行数据传输,但SAS本身的矩阵功能比较弱,传输的矩阵必须使用临时矩阵,现在碰到的一个问题就是:
       在一个数据集中有两列数据,A和B,如何在把这两列数据作为临时矩阵传输到自定义的函数中,A、B数据可能很长,手工输入的方式不大现实。

data test;*定义的测试数据;
   input i A B;
   datalines;
   1   2  3
   2   4  5
   3   6  3
   4   7  3
   5   3  3
   6   8  6
   7   9  3
   8   3  8
   9  10  4
   10 11  10
   ;
   run;


proc fcmp outlib=sasuser.dwt.funcs inlib=sasuser.dwt;*自定义函数;
    function tt(target[*],input[*]);
tNum=dim(target);
sum1=0;
do i=1 to dim(input);
    Sum1=sum1+input[i]
end;
sum2=0;
do i =1 to dim(target);
       sum2=sum2+target[i];
end;
sumDif=sum2-sum1
return (sumDif);
    endsub;
run;


options cmplib=sasuser.dwt;


???如何实现把test中的A、B列作为一个临时数组导入到自定义函数tt中运行,O(∩_∩)O谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:array 应用问题 ARR Ray function 自变量 而且 如何 手工

沙发
playmore 发表于 2013-4-15 16:26:51
不能把test拆成两个数据集,分别包含A和B吗?
array只能用在一个data步吧,想传来传去是不可能的
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
jason_udu 发表于 2013-4-16 09:39:06
playmore 发表于 2013-4-15 16:26
不能把test拆成两个数据集,分别包含A和B吗?
array只能用在一个data步吧,想传来传去是不可能的
可以的,比如下面这个方式:


data a11;
set test end=final;
array ipt[500] _temporary_ (500*-11111111111111111111111111111111111);
array tgt[500]  _temporary_ (500*-11111111111111111111111111111111111);
i=1;
do i=1 to 500;
   if _n_=i then do;
      ipt=A;
          tgt=B;
        end;
end;
run;

但是这样的话,TGT和IPT两个数组的元素个数就和data的观测数不一致,后面有不少预定值。
其实就是如何解决临时数组在data步中动态元素个数的问题。

板凳
playmore 发表于 2013-4-16 09:45:17
jason_udu 发表于 2013-4-16 09:39
可以的,比如下面这个方式:
你可能没懂我的意思
我是说生成一个array在多个data步中用
你这里还是一个data步啊
我知道能传递这种数组或矩阵的就只有哈希表了
用数据集也能传,但毕竟不是最好和最快的办法
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

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

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