如何在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
相关产品推荐
相关产品推荐

