加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

使用自定义的分隔符导入SAS大全(TXT各种文件)

(2014-03-08 16:33:28)
标签:

教育

分类: 03SAS数据处理

例子1:使用自定义的分隔符

缺省, INPUT使用空格作为分隔符. 这个DATA步使用逗号作为分隔符

data num;

   infile datalines dsd;

   input x y z;

   datalines;

,2,3

4,5,6

7,8,9

;

使用dsd缺省将以逗号作为分隔

如果你的分割符有多个字符或者不是逗号,则可以使用下面句子

data nums;

    infile datalines dsd delimiter='ab';

    input X Y Z;

    datalines;

1aa2ab3

4b5bab6

7a8b9

;

上面指定a, b, aa, ab, ba, bb 作为分隔符,输出下面数据

                       OBS        Z

                               2

                               .

                               9

如果输入的字符串中包含分隔符,可使用双引号把字符括起来

data scores;

   infile datalines dsd;

   input Name : $9. Score

         Team : $25. Div $;

   datalines;

Joseph,76,"Red Racers, Washington",AAA

Mitchel,82,"Blue Bunnies, Richmond",AAA

Sue Ellen,74,"Green Gazelles, Atlanta",AAv

;

run;

 

Can you try something like this, take the max length for a field:

 

data  BIAO3                                   ;

    infile 'E:\.样本txt' delimiter  ',' MISSOVER DSD lrecl=32767 firstobs=2 ;

       input city :$6. staff_id :$10. staff_name :$33. ;

           ;

run;

lrecl 是定义每条记录最长占用宽度,如lrecl =100,即最长占用宽度100个字节,超出部分数据将无法使用。

LRECL是用来规定逻辑记录长度,后面的数字是用来定义读取的文件逻辑长度为多少字节的。
ls
其实就是linesize的缩写,是用来规定行的读取长度的,后面的数字是用来定义读取时每行最多读多少个字节的长度。

对于需要按字符型变量设置的情形,该如何编程?
infile "d:\my documents\c.csv" dsd missover firstobs=2;
input m2 $  m3 :$40. m5  m15 :$30.;
label
m2="地区编码"

m3="单位"

m5="常住人口(万人)"

m15="主导工业       

;
run;

 

读入csv时,有dsd就不用加dlm=','

 

是你数据本身的问题,你的数据中的第一行即变量行不是以空格作为分隔符的,而是以TAB做为分隔符的,所以出现变量名不可用。

1.      proc import out=tmp

2.              datafile='d:\test.txt'

3.              dbms=dlm replace;

4.              delimiter='2C09'x;

5.      run;

复制代码

上边的这个可以用于你的数据,不过由于你的第一行中有些变量重名,所以最后生成的数据集中重复的变量名采用sas自动设置的变量名代替

 

An ASCII comma is '2C'x

  and an ASCII tab is '09'x so you could use:

      INFILE fileref DLM='2C09'x;

 

or

 

DATA _NULL_;

CALL SYMPUT('TAB','09'x); RUN;                             

INFILE filere DLM=",&TAB";

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有