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

如何在SAS中导入含空格与逗号双分隔符的.scores文件?

这种同时用空格和逗号当分隔符的文件,确实会让常规的PROC Import直接罢工——我之前踩过这个坑,给你两个靠谱的解决方案:

解决方案1:用INFILE语句手动指定混合分隔符

SAS的INFILE语句支持直接定义多个分隔符,完全适配你的场景。假设你的文件每行是固定数量的字段(比如示例里的4个字段:832783_9399、973299、03200、238003),可以这么写代码:

data scores_data;
    /* 替换成你的文件实际路径 */
    infile "C:\your_folder\your_file.scores" delimiters=' ,'; 
    /* 根据字段实际类型调整:$代表字符型,数字字段去掉$即可 */
    input var1 $ var2 $ var3 $ var4 $; 
run;

小提示:

  • delimiters=' ,'里的空格和逗号顺序不影响,SAS会自动把这两个符号都识别为字段分隔符。
  • 如果字段里有被引号包裹的内容(比如字段本身包含空格/逗号),记得加上DSD参数:infile ... delimiters=' ,' dsd;,这样SAS会忽略引号内部的分隔符。
  • 测试时可以加obs=10参数只读取前10行:infile ... obs=10;,避免浪费时间处理整个文件。
解决方案2:先预处理统一分隔符(适合字段数不固定的情况)

如果你的文件字段数量不固定,或者存在连续空格/逗号的情况,先把所有分隔符统一成一种会更稳妥:

Windows环境(用PowerShell预处理)

先把文件里的逗号替换成空格,再压缩连续的空格:

(Get-Content "C:\your_folder\your_file.scores") -replace ',', ' ' | ForEach-Object { $_ -replace '\s+', ' ' } | Set-Content "C:\your_folder\processed_scores.scores"

然后用常规PROC Import导入处理后的文件:

proc import datafile="C:\your_folder\processed_scores.scores"
    out=scores_data
    dbms=dlm
    replace;
    delimiter=' ';
run;

Linux/Unix环境(用SED预处理)

用SED命令一键替换并压缩分隔符:

sed 's/,/ /g; s/  */ /g' your_file.scores > processed_scores.scores

之后同样用PROC Import导入处理后的文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:38:54