从SAS上的一行CSV数据创建一个表



我试图从csv导入数据,其中只有一行数据的格式如下:

CAS$#$#$LLT_CODE$#$#$PT_CODE$#$#$HLT_CODE$#$#$HLGT_CODE$#$#$SOC_CODE$#$#$LLT$#$#$PT$#$#$HLT$#$#$HLGT$#$#$SOC$#$#$SOC_ABB#$#$#DJ20210005-0$#$#$10001896$#$#$10012271$#$#$10001897$#$#$10057167$#$#$10029205$#$#$Maladie d'Alzheimer$#$#$Démence de type Alzheimer$#$#$Maladie d'Alzheimer (incl sous-types)$#$#$Déficiences mentales$#$#$Affections du système nerveux$#$#$Nerv#$#$#DJ20210005-0$#$#$10019308$#$#$10003664$#$#$10007607$#$#$10007510$#$#$10010331$#$#$Communication interauriculaire$#$#$Communication interauriculaire$#$#$Défauts congénitaux du septum cardiaque$#$#$Troubles congénitaux cardiovasculaires$#$#$Affections congénitales, familiales et génétiques$#$#$Cong#$#$#

"CCD_ 1";确定行的末尾;CCD_ 2";萼片柱。

如何导入?

这是我的代码:

data a; 
infile "C:/Users/Papa Yatma/Documents/My SAS Files/9.4/ATCD.txt" dlm="$" dsd ; 
input var1 $ var2 $ var3 $ var4 $ var5 $ var6 $ 
var7 $ var8 $ var9 $ var10 $ var11 $ var12 $ @@; 
run;

谢谢你的帮助。

只要实际的"记录";不是太长,我会使用DLMSTR=选项来处理该文件两次。首先解析";记录";排列成行。然后从行中读取字段。

因此,首先创建一个新的文本文件,每个记录有一行。

filename new temp;
data _null_;
infile have recfm=n lrecl=1000000 dlmstr='#$#$#';
file new ;
input line :$32767. @;
put line ;
run;

现在,您可以使用其他分隔符字符串读取文件NEW。

例如,您可以将其转换为真正的CSV文件。

filename csv temp;
data _null_;
infile new dlmstr='$#$#$' length=ll column=cc truncover ;
file csv dsd ;
do until(cc>=ll);
input word :$32767. @ ;
put word @;
end;
put;
run;

结果:

CAS,LLT_CODE,PT_CODE,HLT_CODE,HLGT_CODE,SOC_CODE,LLT,PT,HLT,HLGT,SOC,SOC_ABB
DJ20210005-0,10001896,10012271,10001897,10057167,10029205,Maladie d'Alzheimer,Démence de type Alzheimer,Maladie d'Alzheimer (incl sous-types),Déficiences mentales,Affections du système nerveux,Nerv
DJ20210005-0,10019308,10003664,10007607,10007510,10010331,Communication interauriculaire,Communication interauriculaire,Défauts congénitaux du septum cardiaque,Troubles congénitaux cardiovasculaires,"Affections congénitales, familiales et génétiques",Cong

这个CSV文件很容易阅读:

data test;
infile csv dsd firstobs=2 truncover ;
length CAS LLT_CODE PT_CODE HLT_CODE HLGT_CODE SOC_CODE LLT PT HLT HLGT SOC SOC_ABB $100;
input CAS -- SOC_ABB;
run;

如果任何值可能包含行尾字符,那么您应该在第一步中添加代码来替换这些字符。例如,您可以添加此行以将CRLF字符串替换为管道字符。

line = tranwrd(line,'0D0A'x,'|');

最新更新