首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据SAS上的一行CSV数据创建表

根据SAS上的一行CSV数据创建表
EN

Stack Overflow用户
提问于 2021-01-12 20:59:01
回答 1查看 34关注 0票数 0

我尝试从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‘阿尔茨海默$#$#$Démence de type Alzheimer$#$#$Maladie d’阿尔茨海默(包括sous-type)$#$#$Déficiences mentales$#$#$Affections système nerveux$#$#$Nerv#$#$#DJ20210005-0$#$#$10019308$#$#$10003664$#$#$10007607$#$#$10007510$#$#$10010331$#$#$Communication interauriculaire$#$#$Communication interauriculaire$#$#$Défauts congénitaux cardiaque$#$#$Troubles congénitaux cardiovasculaires$#$#$Affections congénitales,familiales et génétiques$#$#$Cong#$#$#

"#$#$#“确定行尾,"$#$#$”分隔列。

如何导入?

下面是我的代码:

代码语言:javascript
复制
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;

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-12 22:26:20

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

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

代码语言:javascript
复制
filename new temp;
data _null_;
  infile have recfm=n lrecl=1000000 dlmstr='#$#$#';
  file new ;
  input line :$32767. @;
  put line ;
run;

现在,您可以使用另一个分隔符字符串读取新的文件。

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

代码语言:javascript
复制
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;

结果:

代码语言:javascript
复制
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文件就很容易阅读了:

代码语言:javascript
复制
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字符串替换为管道字符。

代码语言:javascript
复制
line = tranwrd(line,'0D0A'x,'|');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65684461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档