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

使用SAS INFILE语句读取CSV文件无观测值问题咨询

解决SAS INFILE读取CSV时0观测的问题

我来帮你排查这个头疼的问题——你得到0 observations and 1 variables的结果,说明SAS根本没从你的CSV文件里读到任何数据行,咱们一步步来定位解决:

1. 先确认文件路径绝对正确

这是最常见的坑!你得先保证"E:/Documents/Week 2/np_traffic.csv"这个路径完全匹配实际文件的位置:

  • 检查文件夹名称有没有拼写错误(比如Week 2是不是写成了Week2?有没有空格漏写?)
  • 可以用SAS自带的函数快速验证路径有效性,运行这段代码:
    FILENAME test "E:/Documents/Week 2/np_traffic.csv";
    %PUT %SYSFUNC(FILEEXIST(&test.));
    
    如果日志里输出1,说明路径没问题;输出0就赶紧修正路径。

2. 检查firstobs=2是否合理

你设置了firstobs=2,意味着SAS会跳过第一行直接从第二行开始读。但如果你的CSV文件第一行就是数据(没有表头),那这一步直接把所有数据都跳过了,自然0观测。

  • 打开你的np_traffic.csv文件看看第一行是不是表头:
    • 如果没有表头,直接删掉firstobs=2再运行;
    • 如果有表头,那继续往下排查。

3. 调整INFILE的参数适配文件格式

有时候CSV的分隔符、行尾格式会导致SAS读不到数据,试试这几个调整:

  • 如果分隔符不是逗号:比如你的文件是制表符分隔,要加上delimiter参数,比如:
    INFILE "E:/Documents/Week 2/np_traffic.csv" dsd firstobs=2 delimiter='09'x;
    
  • 加上missover或truncover:防止SAS因为行尾没有分隔符就跳过整行,修改后的INFILE语句:
    INFILE "E:/Documents/Week 2/np_traffic.csv" dsd firstobs=2 missover;
    

4. 做个最小测试排除变量问题

先简化代码,去掉firstobs=2,只读取第一行看看能不能拿到数据:

DATA traffic2;
    INFILE "E:/Documents/Week 2/np_traffic.csv" dsd;
    INPUT ReportingDate $;
RUN;
  • 如果这时候能读到观测,说明firstobs=2的设置错误;
  • 如果还是0观测,那大概率是文件本身损坏,或者路径依然有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:52:29