You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS加载列间含大量空格的BLS文本文件报错,如何修复?

修复BLS固定宽度文本文件的SAS读取错误

你的问题出在两个核心点:

  1. 错误混用dsd选项与列指针定位:dsd是针对分隔符(如逗号)分隔的文件设计的,会自动识别并跳过分隔符,但你的BLS文件属于固定宽度格式,每列位置固定,dsd会干扰列指针的定位逻辑,导致读取位置偏移,进而引发year、value等列的数据错误。
  2. 列指针位置与实际文件不符:BLS的la.data系列文件标准列位置并非你代码中写的@32、@36这类数值,比如year字段通常从第21位开始,而非第32位。

修正后的SAS代码

data unemployment;
  infile 'P:\Projects\la.data.2.AllStatesU.txt' firstobs=2 truncover;
  input   @1  series_id : $20.
          @21 year
          @25 period : $3.
          @28 value   
          @39 footnote_codes : $1.;
run;

额外验证步骤

  • 用文本编辑器(如Notepad++)打开原始文件,查看第2行的实际列位置(编辑器状态栏会显示光标所在列数),确认year、period等字段的起始位置是否与代码一致,如有偏差再调整@后面的数字。
  • 运行proc print data=unemployment(obs=5);查看前5行数据,确认各列读取是否正确。

内容的提问来源于stack exchange,提问作者bandcar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:27:06