同时使用dsd和逗号信息

时间:2012-09-27 16:52:06

标签: sas

我有以下原始数据

1,,35,000  
2,100,45,000

并在数据集中需要以下内容

1 .   35000  
2 100 45000

这将需要dsd选项和使用逗号。了信息。

如何进行此操作?

1 个答案:

答案 0 :(得分:1)

DSD与此无关 - DSD涉及输入     1 ,, “35000”     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;

如果潜在的字段位于一致的字段中,而不是第一个字段,则可以修改上述解决方案以进行更正。如果它可能不止一个领域,那么你需要解决一个更难的问题。