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

如何在SAS中读取CSV文件特定行?含Proc Import实现方法

在SAS中读取CSV文件的特定行或限制导入行数的方法

完全可以实现读取CSV的特定行或限制导入行数的需求,比如只导入前800行,下面分两种常用方法说明,其中包含你关注的proc import实现方式:

一、使用proc import结合系统选项实现行数限制

proc import本身没有直接指定行数的参数,但可以通过SAS系统选项obs=来限制导入的总行数,具体操作如下:

修改你的代码,在proc import前添加obs=800选项,即可只导入前800行数据:

options MSGLEVEL=I;
options validvarname=v7;
/* 设置只读取前800行 */
options obs=800;
proc import 
  out=one 
  datafile='/home/user/Assessment/test_1.csv'
  DBMS=csv
  replace
  ; 
  getnames=yes;
run;
/* 重置obs选项为默认值,避免影响后续程序 */
options obs=max;
  • 注意:obs=选项是全局生效的,所以导入完成后记得设置options obs=max恢复默认,防止后续其他数据处理被限制行数。
  • 如果需要跳过前N行再读取,可以结合firstobs=选项,比如options firstobs=101 obs=900,就是跳过前100行,读取第101到900行(共800行)。

二、使用DATA步直接读取(更灵活)

如果需要更精准的行范围控制,比如读取特定行区间,推荐用DATA步直接读取CSV,示例代码如下:

options validvarname=v7;
data one;
  infile '/home/user/Assessment/test_1.csv' dsd firstobs=2 /* firstobs=2表示跳过表头行 */ obs=801; /* 读取第2到801行,共800条数据 */
  length 列名1 $20 列名2 8 ...; /* 根据实际列定义变量类型和长度 */
  input 列名1 列名2 ...; /* 按顺序列出所有列名 */
run;
  • dsd选项用于处理带引号的CSV字段,和proc import的逻辑一致;
  • firstobs=2是因为CSV第一行是表头,所以从第2行开始读数据;
  • obs=801对应读800条数据(801-2+1=800);
  • 如果不需要跳过表头,直接设置firstobs=1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:05