将字符值分配给数值变量

问题描述 投票:0回答:1

我是 SAS 新手。我一直在阅读 SAS 认证复习基础编程书,并遇到了以下令我困惑的示例和问题。

首页是示例。我很困惑,因为

first
数组是一个定义为包含 3 个数值变量的数组,而不是在输出中
first
数组中的每个元素都包含字符值。这怎么可能?

底页是一个与示例相关的问题,正确答案是C,我不明白为什么。

我知道数值变量的默认字节大小是 8 个字节,但是

newfirst
数组是一个包含 3 个没有默认大小的字符变量的数组。

欢迎任何建议或意见!

sas
1个回答
0
投票

声明

array first [3] ;

没有说明它包含什么类型的变量。

它只是这些数组语句之一的简写:

array first first1 first2 first3 ;
array first first1-first3 ;

省去了列出数组将用于引用的变量名称的麻烦。

因此,如果当 SAS 看到 ARRAY 语句时 FIRST1 到 FIRST3 已经存在,那么这些变量将在数组中使用。

由于该数据步骤有一个 SET 语句,我们可以假设 FIRST1 到 FIRST3 已经存在于数据集 NAMES 中,因此它们将在看到 ARRAY 语句之前在这个新数据步骤中定义。

我怀疑你很困惑,因为如果你提到它们,SAS 会创建新变量。如果没有附加信息,猜测这些先前未定义的变量应该是什么类型的变量,它将使它们成为数字。这并非特定于 ARRAY 语句。首先在赋值语句、INPUT 语句、FORMAT 语句等中使用变量也会产生副作用,即强制 SAS 猜测您想要它们的类型(以及字符变量的长度)。

© www.soinside.com 2019 - 2024. All rights reserved.