gpt4 book ai didi

char - SAS 在没有被要求的情况下将字符变量转换为数字

转载 作者:行者123 更新时间:2023-12-01 05:06:43 24 4
gpt4 key购买 nike

我有以下 SAS 代码:

DATA WORK.temp; 
SET WORK.proj;

RETAIN prev_time
prev_name
prev_type
count 0;

FLAG = 0;

IF( (prev_name = name) AND (prev_type NE type) AND (prev_type = 'x')) THEN DO;
TimeDifference = time - prev_time;
IF( TimeDifference < 10*60) THEN DO;
FLAG = 1;
count + 1;
END;
END;
prev_time = time;
prev_type = type;
prev_name = name;
RUN;

当我运行该程序时,我收到提示,告诉我我的字符值已转换为数值:

注意:字符值已转换为数值

注意:无效的数字数据,name='somename'

注意:无效的数字数据,name='othername'

我从未要求 SAS 进行此转换,这会导致输出错误。知道是什么原因造成的吗?

谢谢!

最佳答案

您肯定确实(隐含地)要求 SAS。

RETAIN prev_time
prev_name
prev_type
count 0;

这不只是将 count 设置为 0。它将 所有四个变量 设置为 0,这是数字。所以 prev_name 是数字,当你说 prev_name=name (在 IF 语句和后面的赋值中)你会得到这个注释。

你可以在这里看到:

data test;
retain x y z 0;
put x= y= z=;
run;

所有三个变量都初始化为 0,而不仅仅是 z。代码中的换行符没有任何意义(这在 SAS 中很常见)。

此外,您的 count 变量会按照您的方式自动保留:

count+1;

求和运算符保留,AND 的作用类似于sum(),表示缺失加一为一(不缺失)。

所以这里最简单的解决方法是从保留语句中删除 count 0,其余的应该没问题。

关于char - SAS 在没有被要求的情况下将字符变量转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com