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

SAS读取文件时将特定空格视为字符的实现问询

SAS读取含空格的字段(不将空格视为列分隔符)

要实现将字段内的空格作为字符保留、不跳转到下一列的需求,你可以放弃原固定列输入的方式,改用以下两种直观方法:

方法1:用SCAN函数按多空格分隔提取字段

通过将整行数据读入字符变量,再以连续空格作为字段分隔符,单个空格会被保留在字段内:

data try1;
  length A $3 B $3 C $3 D $2 E $2;
  input @1 line $char80.;
  /* 以两个空格为分隔符,提取各字段,单个空格保留在字段中 */
  A = scan(line, 1, '  ', 'm');
  B = scan(line, 2, '  ', 'm');
  C = scan(line, 3, '  ', 'm');
  D = scan(line, 4, '  ', 'm');
  E = scan(line, 5, '  ', 'm');
  /* 若需将部分字段转为数值型,可添加:A_num = input(A, 3.); */
  drop line;
cards;
33  2 2  66  89  99
;
run;
  • 核心参数'm'表示将连续的分隔符视为一个,确保单个空格不会被当作分隔符。

方法2:用INFILE的DLM+DSD选项读取

通过指定分隔符为空格,配合DSD选项实现连续空格作为字段分隔,单个空格保留:

data try1;
  infile cards dlm=' ' dsd truncover;
  length A $3 B $3 C $3 D $2 E $2;
  input A B C D E;
cards;
33  2 2  66  89  99
;
run;
  • dlm=' '指定空格为分隔符,dsd会自动将连续空格合并为一个分隔符,字段内的单个空格会被保留。

原代码问题说明

你之前的固定列输入(input A 1-3 B 7-9...)依赖严格的列位置匹配,但示例数据行的内容并未对应预设的列位置,且固定列读取会直接忽略列内空格,无法实现保留空格的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:35:14