楼主: pzc1453144122
817 7

[问答] SAS if else 语句判断字段类型报错 [推广有奖]

  • 0关注
  • 0粉丝

大专生

20%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
82 点
帖子
6
精华
0
在线时间
100 小时
注册时间
2020-11-29
最后登录
2025-5-8

楼主
pzc1453144122 发表于 2023-8-31 09:15:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
望大佬们解释一下,为什么这段SAS程序会报错。
SAS error
二维码

扫码加我 拉你入群

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

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

关键词:else LSE ELS sas程序

沙发
HXAI102230 在职认证  发表于 2023-8-31 11:33:08
put 函数的第一个参数应该是数值型变量,上面set数据集里面的a变量为字符型,所以报错了。

藤椅
pzc1453144122 发表于 2023-8-31 13:21:05
HXAI102230 发表于 2023-8-31 11:33
put 函数的第一个参数应该是数值型变量,上面set数据集里面的a变量为字符型,所以报错了。
是的,例子写错 用了if进行了条件判断

板凳
pzc1453144122 发表于 2023-8-31 13:23:53
pzc1453144122 发表于 2023-8-31 13:21
是的,例子写错 用了if进行了条件判断
应该是这个例子,同样报错了。逻辑上用了if做判断,应该没有问题的呀
data test;
a = '1987-12-23';
run;

data test2;
set test;
if vtype(a)='C' then b = a;
else b = put(a,yymmdd10.);
run;

报纸
AngleeZZ 发表于 2023-9-1 09:57:15
在SAS执行set test;语句的时候,a变量的类型已经被设置成c了,还用if vtype(a)='C'判断什么呢?
另外put(a, yymmdd10.);这里的a必须是数值变量,
因为set test;的时候,a变量的类型已经被设置成c了,所以报错了。

想要程序能跑出结果的话,可以写成下面这样,但也会出个不友好的NOTE信息
data test;
a = '1987-12-23';
run;

data test2;
set test;
length b $20 c 8;
if vtype(a)='C' then b = a;
if vtype(a)='N' then c = a;
if not missing(c) then b = put(c, yymmdd10.);
run;

地板
pzc1453144122 发表于 2023-9-1 10:20:39
AngleeZZ 发表于 2023-9-1 09:57
在SAS执行set test;语句的时候,a变量的类型已经被设置成c了,还用if vtype(a)='C'判断什么呢?
另外put( ...
感谢大佬,你的代码测试没有任何问题。
我还是有个逻辑上的绕不过去,set test;的时候a是字符型了,vtype(a)='C' 为真,应该不会执行 else b = put(a,yymmdd10.);了,逻辑上不用报错的呀

7
AngleeZZ 发表于 2023-9-1 10:32:49
逻辑上是不会执行else后面的语句
但是SAS的报错分为代码编译时的(语法问题)报错和执行时的报错
PUT函数在编译时就会检查指定输出格式。

比如以下情况会出现语法错误:
・关键字拼写错误(不存在的过程或函数名称、语句或选项)
・单词之间的空格被遗忘
・忘记句末的分号(;)
・如果输入全角空格
・Do-End 语句的嵌套中没有对应关系时
以下情况发生运行时错误:
・输入数据时,要读取的数据格式与读取格式不同或无法匹配。
・尝试处理未定义的变量时
- 指定无效的函数参数(例如指定不存在的日期)
・除以零时

8
pzc1453144122 发表于 2023-9-1 10:43:32
AngleeZZ 发表于 2023-9-1 10:32
逻辑上是不会执行else后面的语句
但是SAS的报错分为代码编译时的(语法问题)报错和执行时的报错
PUT函数 ...
谢谢大佬,豁然开朗了

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

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