楼主: lemonxinran
5345 5

[问答] sas中的宏变量可以是变量名吗? [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2013-1-2 21:13:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教:初学sas,通过看教材了解到sas中定义的宏变量可以是一个dataset;也可以是命令或文本,那么可以将数据集中的某个变量的值定义成宏变量吗?
我写了如下程序:
%let price=a.unit_price; (这里,unit_price是a中的一个变量)
%let number=a.tran_capacity; (同上)
data a;
totalpay=&price*&number;
set a;
run;

最后提示这段程序是错误的?
请问错误的原因是sas中的宏变量不可以是变量名还是我本身程序写错了?
谢谢解惑!
二维码

扫码加我 拉你入群

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

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

关键词:Capacity dataset Number Price 初学sas number price

沙发
CTR1013 发表于 2013-1-2 22:36:55
没有这样的限制的,是你引用的方法不对,a.unit_price这样不行的,直接用变量名unit_price。
%let price=unit_price;
%let number=tran_capacity;
data a;
totalpay=&price*&number;
set a;
run;
这样应该没问题的。

藤椅
lemonxinran 发表于 2013-1-2 22:58:55
CTR1013 发表于 2013-1-2 22:36
没有这样的限制的,是你引用的方法不对,a.unit_price这样不行的,直接用变量名unit_price。
%let price=u ...
谢谢。这个命令确实是正确的。
但是,为什么输出结果是这样:
totalpay unit_price tran_capacity
       .        2          3
       6        1          .
       .         4          5
      20        2         8
      16        .          .
也就是说,计算的unit_price 和tran_capacity的乘积在下一行出现。
这是为什么呢?谢谢!

板凳
CTR1013 发表于 2013-1-2 23:03:40
大概是sas的机制问题,你要把计算结果放在当前行就把set a;放在totalpay=&price*&number;前面
%let price=unit_price;
%let number=tran_capacity;
data a;
set a;
totalpay=&price*&number;
run;

报纸
lemonxinran 发表于 2013-1-2 23:24:13
CTR1013 发表于 2013-1-2 23:03
大概是sas的机制问题,你要把计算结果放在当前行就把set a;放在totalpay=&price*&number;前面
%let price= ...
我按照您的方法试了一下,这次对了,谢谢不吝赐教!

地板
何必不淡定。 发表于 2014-8-7 10:34:38
因为在读入数据之前 PDV中会把每个变量设置为missing

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

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