【问题标题】:SAS variable value does not match the formatting specifiedSAS 变量值与指定的格式不匹配
【发布时间】:2019-02-14 14:33:56
【问题描述】:

我有一个 SAS 数据集。当我“查看列”时,我发现一列 Type=text,length=3,informat = $3.,format=$3。 此变量中存储的值为 10。

但是根据属性,不应该存储为010吗?

【问题讨论】:

    标签: sas


    【解决方案1】:

    属性说你有一个可以容纳 3 个字节的字符变量(正常的字符编码每个字符使用一个字节)。您可以将“010”存储在该变量或“10”甚至“10”中。您还可以存储“ABC”或“abc”。它只是一个字符变量。请注意,SAS 始终存储固定长度的字符字段,因此较短的值用空格填充。

    它还可选地添加了 FORMAT 元数据,说明在显示值时 SAS 应该使用 $3。格式。同样,它有可选的元数据,说明在阅读文本时应该使用 $3。 informat 将传入的文本转换为要存储的值。

    不需要此元数据,因为 SAS 已经知道如何读取和显示字符数据。如果您确实使用前导空格存储值,则可能需要附加 $CHAR3. 格式,以便在写入值时保留前导空格。

    【讨论】:

      【解决方案2】:

      由于变量只是文本,它只会存储分配给它的内容。例如:

      data have;
         length var1 $ 3;
      
         informat var1 $3.;
      
         format var1 $3.;
      
         input var1;
      
         datalines;
      10 
      010
      ;
      

      它的格式为 $3。不会导致它以前导 0 为前缀,正如您将在 $wdocumentation 中看到的那样。格式,这里没有提到。此外,该值稍后可以更改为“ab”;在这两种情况下,值都用尾随空格填充以构成 3 的长度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        相关资源
        最近更新 更多