gpt4 book ai didi

SAS 长度语句

转载 作者:行者123 更新时间:2023-12-04 22:10:57 32 4
gpt4 key购买 nike

我刚刚意识到减少数字(虚拟和整数)变量的长度是多么有用,因为它可以节省我的时间和磁盘空间。但是,我认为在我的代码末尾使用 length 语句比在提到“set”之前使用 length 语句更方便(后一种方式是 SAS 博主和其他专家大多推荐您使用 length 语句的方式)。

那么,这两种方式有区别吗(见下面的例子)?我在输出中找不到任何差异,但我有点担心我可能做错了什么。您能否解释一下区别是什么(如果有的话)以及为什么您更愿意采用这两种方式。

提前致谢!

这是我如何使用长度语句的示例:

data b;  
set a;

dummy = income > 10 000;

label "dummy = Income > 10 000";

length dummy 3;

run;

但专家建议您这样做。

data b;  
length dummy 3;
set a;

dummy = income > 10 000;

label "dummy = Income > 10 000";

run;

最佳答案

我敢发誓,在以前的 SAS 版本中,一旦由长度语句定义或从源数据“继承”,您将无法覆盖变量的长度。

我记得一些关于“变量的长度......已经设置”的注释或警告。

在 SAS 9.3 中,代码:

data a;
length income dummy 8.;
income = 1234567890;
dummy = 1234567890;
output;
stop;
run;

data b;
set a;
attrib dummy length = 3 label = "dummy = Income > 10 000";

dummy = income > 10000;
length dummy 8;
length dummy 5;
run;

创建一个长度为 5 的变量虚拟对象,没有任何注释。所以在我看来,行为已经改变了。以前,我会说您最终会得到一个由第一个显式定义或出现在源数据中定义的变量。

但是先给变量赋值,最后再定义变量的基本属性,肯定不利于代码的可读性和可维护性。

顺便说一句,标签的正确定义是:label dummy = "dummy = Income > 10 000";

或者,您可能更喜欢使用 ATTRIB 语句在单个语句中指定单个变量的各种属性。

data b;  
set a (drop = dummy);
attrib dummy length = 3 label = "dummy = Income > 10 000";

dummy = income > 10000;

run;

关于SAS 长度语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356838/

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