Sas 同时使用dsd和逗号信息

Sas 同时使用dsd和逗号信息,sas,Sas,我有以下原始数据 1,,35,000 2,100,45,000 并且需要在数据集中显示以下内容 1 . 35000 2 100 45000 这需要dsd选项和使用逗号。告密者 data test; infile datalines dlm=',' dsd; input id num dollar :comma8.; datalines; 1,,"35,000" 2,100,"45,000" ;;;; run; 如何执行此操作?DSD与此无关-DSD涉及如下输入 1,,"

我有以下原始数据

1,,35,000  
2,100,45,000
并且需要在数据集中显示以下内容

1 .   35000  
2 100 45000
这需要dsd选项和使用逗号。告密者

data test;
infile datalines dlm=',' dsd;
input id
num
dollar :comma8.;    
datalines;
1,,"35,000"
2,100,"45,000"
;;;;
run;

如何执行此操作?

DSD与此无关-DSD涉及如下输入 1,,"35,000" 2100,“45000”

如果这就是您所拥有的,那么您可以使用:运算符将其与逗号信息一起读入

data test;
infile datalines dlm=',' dsd;
input id
num
dollar :comma8.;    
datalines;
1,,"35,000"
2,100,"45,000"
;;;;
run;
如果字段周围没有引号,则需要以某种方式对其进行解析。下面是一个解决方案,只要带逗号的字段是最终字段,它就可以工作

data test;
infile datalines dlm=',' dsd;
input @;
if countc(_infile_,',') =3 then do;
 _commapos = findc(_infile_,',',-1*length(_infile_));
 _infile_ = substr(_infile_,1,_commapos-1)||substr(_infile_,_commapos+1);
end;
input id
num
dollar ;
put _all_;
datalines;
1,,35,000
2,100,45,000
;;;;
run;
如果你的潜力所在的领域是一个一致的领域,但不是第一个领域,你可以修改上述解决方案,以纠正它。如果它可能涉及多个领域,那么你就有一个更难解决的问题