【问题标题】:Validating SAS dataset验证 SAS 数据集
【发布时间】:2019-05-23 23:16:24
【问题描述】:

我想验证一个包含 100 个变量和超过 100000 条记录的数据集。我正在以字符串形式导入数据(即使是数字数据)。我观察到一些变量最终被截断。如何验证每个变量以确保数据完全填充(未截断)?

样本数据:

data dsn;
infile "xyz.txt" dlm= '|' RECFM=V LRECL=2000 PAD MISSOVER;
length
a1 $20.
a2 $100.
a3 $50.
;
input a1 $
a2 $
a3 $
;
run;

例如,字符串值为 1532564.7564,我在导入后得到 1532564.756。所以,我的问题是,得到的值被截断了。但是,当我将其更改为数字数据时,我会得到完整的值。同样,Licnum 是字符数据(例如:12xd456),并且在最后一位被截断(显示为 12xd4)。

【问题讨论】:

  • 显示一些示例数据和数据步骤的日志行。
  • 如果您使用的是 SAS/Unix,请尝试一些 shell 脚本来验证负载。否则,一旦建立此临时数据集,请考虑将整个原始文本文件暂存到临时数据集中,使用此临时数据集中的所需列创建新数据集。

标签: sas sas-macro


【解决方案1】:

试试这些调整

  • 增加LRECL
    超过 2000 个字符列的任何内容都将被剪裁。
  • 增加被剪裁变量的$ 长度。
    1532564.7564 的值是 12 个字符,不适合 $11. 的变量
  • 确保所有具有$<n>. 格式的变量不超过<n>
    如果您有attrib Licnum length=$7 format=$5.,那么在查看数据时只会看到前五个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多