【发布时间】:2019-02-14 14:33:56
【问题描述】:
我有一个 SAS 数据集。当我“查看列”时,我发现一列 Type=text,length=3,informat = $3.,format=$3。 此变量中存储的值为 10。
但是根据属性,不应该存储为010吗?
【问题讨论】:
标签: sas
我有一个 SAS 数据集。当我“查看列”时,我发现一列 Type=text,length=3,informat = $3.,format=$3。 此变量中存储的值为 10。
但是根据属性,不应该存储为010吗?
【问题讨论】:
标签: sas
属性说你有一个可以容纳 3 个字节的字符变量(正常的字符编码每个字符使用一个字节)。您可以将“010”存储在该变量或“10”甚至“10”中。您还可以存储“ABC”或“abc”。它只是一个字符变量。请注意,SAS 始终存储固定长度的字符字段,因此较短的值用空格填充。
它还可选地添加了 FORMAT 元数据,说明在显示值时 SAS 应该使用 $3。格式。同样,它有可选的元数据,说明在阅读文本时应该使用 $3。 informat 将传入的文本转换为要存储的值。
不需要此元数据,因为 SAS 已经知道如何读取和显示字符数据。如果您确实使用前导空格存储值,则可能需要附加 $CHAR3. 格式,以便在写入值时保留前导空格。
【讨论】:
由于变量只是文本,它只会存储分配给它的内容。例如:
data have;
length var1 $ 3;
informat var1 $3.;
format var1 $3.;
input var1;
datalines;
10
010
;
它的格式为 $3。不会导致它以前导 0 为前缀,正如您将在 $w 的 documentation 中看到的那样。格式,这里没有提到。此外,该值稍后可以更改为“ab”;在这两种情况下,值都用尾随空格填充以构成 3 的长度。
【讨论】: