楼主: 颜书云
5465 4

急求:SAS中如何将某一数据集变成宏变量应用到另一数据集进行循环引用 [推广有奖]

  • 0关注
  • 0粉丝

初中生

33%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
179 点
帖子
14
精华
0
在线时间
8 小时
注册时间
2009-3-18
最后登录
2019-5-15

楼主
颜书云 发表于 2017-1-10 11:08:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data ta;
   input num dpd  repcnt c;
   cards ;
6 0 1 1
6 0 2 3
6 0 3 0
6 1 0 1
6 1 1 1
6 1 2 1
9 0 1 0
9 0 9 3
9 1 0 1
9 1 3 2
9 3 0 0
9 3 2 1
;
run;
data tb;
  input numx dpdx  repcntx x y ;
  cards;
6 0 1 12 3000
6 1 2 9  4000
9 0 9 10 5000
9 1 3 3  8000
9 3 2 5  9000
;
run;
/*现在需要对tb数据集进行操作,每一条记录根据numx dpdx repcntx的取值分别与数据集ta的num dpd  repcnt变量取值进行比对,从而获得相应c的取值,用于计算新变量z,计算公式为z=sum(cx,(c-repcnt)*y);  */
/*考虑到ta数据集实际上充当比对功能,其记录可能有上白条,而数据集tb可能记录更多,可否将数据集ta变成相应的宏变量,在数据集tb中引用,每一条记录逐一判断,从而得到新变量z加入数据集tb中*/
二维码

扫码加我 拉你入群

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

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

关键词:数据集 cards Input Data card 急求sas宏使用

沙发
dogmamongo 发表于 2017-1-10 15:13:57
proc sql;
   create table new as select
  sum(a.c*b.x,(a.c-a.repcnt)*b.y) as z
from ta as a,tb as b
where a.num=b.numx and a.dpd=b.dpdx and a.repcnt=b.repcntx;
quit;
这样或许可以使用

藤椅
颜书云 发表于 2017-1-10 18:02:42
谢谢,但问题是,第一个表相当于参数表,第二个表需要调用进行循环,数据集大的时候存在多对多匹配,因此考虑使用call symput函数将第一个数据集变成代下标的宏变量,从而可以在另一个数据集中进行循环引用衍生其他计算

板凳
suzhzh 发表于 2017-1-11 11:48:57
Call symput

报纸
颜书云 发表于 2017-1-23 14:27:32
的确可以使用call symput 但问题是由于把数据集变成了宏参,后期调用运行会出现内存不足

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

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