【发布时间】:2016-01-13 09:59:53
【问题描述】:
我正在使用 PROC IMPORT 将 .csv 文件导入 SAS,它工作正常。但是,当我通过从 SQL 导出生成 .csv 文件时,我的一些定量列具有 NULL。当 SAS 遍历这些列时,即使 1000 个条目中只有 1 个为 NULL(SAS 认为是字符串),他也会将这些列分类为字符。
有什么方法可以告诉 SAS NULL 代表一个缺失值并且应该相应地处理?
谢谢
【问题讨论】:
我正在使用 PROC IMPORT 将 .csv 文件导入 SAS,它工作正常。但是,当我通过从 SQL 导出生成 .csv 文件时,我的一些定量列具有 NULL。当 SAS 遍历这些列时,即使 1000 个条目中只有 1 个为 NULL(SAS 认为是字符串),他也会将这些列分类为字符。
有什么方法可以告诉 SAS NULL 代表一个缺失值并且应该相应地处理?
谢谢
【问题讨论】:
不适用于 PROC IMPORT。 您可以预处理文件并将字符串“NULL”转换为实际的空白空间。
data _null_;
infile 'my.csv' dsd truncover length=ll column=cc ;
outfile 'new.csv' dsd ;
length cell $5000 ;
do while (cc < ll);
input cell @;
if cell='NULL' then cell=' ';
put cell @;
end;
put;
run;
或者您可以使用数据步骤读取文件并创建将“NULL”转换为缺失的用户定义信息。
proc format ;
invalue nulls 'NULL'=. ;
run;
data _null_ ;
infile 'my.csv' dsd ;
informat mynumber nulls. ;
input mynumber ;
run;
【讨论】:
感谢您的反馈。我最终使用了以下内容:
data lib.project;
set lib.project;
array change _character_;
do over change;
if change="NULL" then change=.;
end;
run;
【讨论】: