楼主: hohoo0042
959 3

Reading Part of a Raw Data File 问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

15%

还不是VIP/贵宾

-

威望
0
论坛币
2905 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
361 点
帖子
27
精华
0
在线时间
37 小时
注册时间
2013-2-15
最后登录
2019-4-15

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
刚开始学SAS,今天看到如题部分(The little sas),举的例子是
freeway 408 3684 3459
surface Martin Luther King Jr. Blvd. 1590 1234
surface Broadway 1259 1290
surface Rodeo Dr. 1890 2067
freeway 608 4583 3860
freeway 808 2386 2518
surface Lake Shore Dr. 1590 1234
surface Pennsylvania Ave. 1259 1290


从中读取freeway的数据,可以用下面程序实现。
DATA freeways;
INFILE ’c:\MyRawData\Traffic.dat’;
INPUT Type $ @;
IF Type = ’surface’ THEN DELETE;
INPUT Name $ AMTraffic PMTraffic;
RUN;
PROC PRINT DATA = freeways;
TITLE ’Traffic for Freeways’;
RUN;


我就想到如果要读取suface的数据怎么办?但是路名字段长度/空格都不规则,怎么样顺利读取Name呢,请大侠指点。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:reading DING file PART Data little 程序

沙发
matchlessboy 发表于 2013-3-15 05:10:34 |只看作者 |坛友微信交流群
想到一个笨办法,只对你这种特殊情况有用,同求其他方法.
data aaa;
        infile 'c:\MyRawData\Traffic.dat';
        input type $ remain & $100.;
        length name $ 30.;
                if type='freeway' then
                        name=scan(remain,1);
                else name=compress(remain,'1234567890');
        amtraffic=scan(remain,-2);
        pmtraffic=scan(remain,-1);
        drop remain;
run;
proc print;run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hohoo0042 + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
bobguy 发表于 2013-3-15 11:54:09 |只看作者 |坛友微信交流群
matchlessboy 发表于 2013-3-15 05:10
想到一个笨办法,只对你这种特殊情况有用,同求其他方法.
data aaa;
        infile 'c:\MyRawData\Traff ...
Another 笨办法.

data like_sas ;
   length name $28 add1 add2 $8;
   input dummy $ @;
   if dummy='surface' then do;
         add2=scan(_infile_,-1,' ');
         add1=scan(_infile_,-2,' ');
         name=substr(_infile_,length(dummy)+1,
          length(_infile_)-length(dummy)-length(add1)-length(add2)-2);
         output;
   end;
   keep name add:;
cards ;
freeway 408 3684 3459
surface Martin Luther King Jr. Blvd. 1590 1234
surface Broadway 1259 1290
surface Rodeo Dr. 1890 2067
freeway 608 4583 3860
freeway 808 2386 2518
surface Lake Shore Dr. 1590 1234
surface Pennsylvania Ave. 1259 1290
;
proc print;run ;

使用道具

板凳
hohoo0042 发表于 2013-3-16 06:30:44 |只看作者 |坛友微信交流群
非常感谢,继续求其他方法

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-14 20:29