sas - SUBSTR(SCAN(...)) 及其内容
问题描述
我被要求找到下面程序中定义的 First 的长度,我认为它应该是 15,但答案说是 200。
我的想法是 SCAN(Author,1,',') 的值是 Agatha,但由于我没有定义它的长度,所以长度与 Author 相同,即 15。同样,First 的值是 A,因为它的第一个字母Agatha 的,但由于没有指定长度仍然是 15。
data test;
Author='Agatha Christie';
First=substr(scan(Author,1,','),1,1);
run;
proc contents;
run;
我不知道 200 是从哪里来的……我可以寻求帮助吗?
解决方案
在 SAS 9.4 之前,从 Scan 函数返回的可变长度过去是 200。但是 SAS 9.4 在 scan 函数中给出的可变长度与其操作的变量相同。因此,新的可变长度将是 15 而不是 @Craig 所说的 200。以下是 SAS 9.4 文档的信息。
在 DATA 步中,如果 SCAN 函数将一个值返回给尚未指定长度的变量,则该变量将被赋予第一个参数的长度。此行为与以前版本的 SAS 中的行为不同。在以前的版本中,创建长度为 200 的变量的代码可能会生成长度大于预期的变量。如果您需要 SCAN 函数为变量分配一个不同于第一个参数长度的值,请使用 LENGTH 语句。
推荐阅读
- javascript - 我无法找到此代码的解决方案这些是问题
- laravel - 测试:无法定位元素
- c# - Microsoft.EntityFramework.core.sqlite 返回空值
- java - 如何避免万无一失的测试并行运行
- android - Android - 解析 facebook 图形请求响应
- vba - excel VBA选择和粘贴问题
- javascript - Javascript ES6:从 JSON 数组内部获取特定数组并使用映射对其进行迭代
- angular - 角动态形式
- java - Java-方法似乎在第二次调用时跳过了一步
- python - 如何使名称成为python中的变量?