查看: 1047|回复: 0

[原创] 第三周作业的不同思路以及完成代码分享

[复制链接]
论坛徽章:
1
python徽章
日期:2019-02-28 15:00:58
发表于 2018-4-11 15:24 | 显示全部楼层 |阅读模式
首先贴出作业


Libname mail 'D:\homework\第3周';
data maillog1;
INFILE 'D:\homework\第3周\maillog.txt';
(一开始读取的是to remote 发现遗漏一些to local后的邮箱,虽然我感觉好像并不需要   不妨碍一起收集起来吧- -  所以最终以to来input)
INPUT @'starting delivery ' num 4. @'to' email &$50.;
(因为以to读取  ,所以读取后有remote跟local  以下两步为去除该两个单词)
IF substr(email,1,1)='r'  THEN email=substr(email,8,length(email)-7);
IF substr(email,1,1)='l'  THEN email=substr(email,7,length(email)-6);
RUN;
proc print;
TITLE 'num and mail adress';
RUN;
(至此第一部分     maillog1数据集完成)


data maillog2;
INFILE 'D:\homework\第3周\maillog.txt';
input @' delivery ' num 4. @": " status $ reason & $500.;
(论坛中有帖子分析说过   我们要提取的是两个:之间的failure或者sucess或者deferral,所以在以‘:’input后  还会出现一个:,所以下面一步为去除这个:
if index(status,':')>0 THEN status=substr(status,1,length(status)-1);
(去除msg的我们不需要的信息)
IF status NE 'msg';
RUN;
PROC print;
TITLE 'num status and reason';
RUN;
(至此第二部分    maillog2完成)


(接下来就是合并 老师的视频中有见过)
PROC SORT DATA =maillog1;
BY num;
PROC SORT DATA=maillog2;
BY num;
DATA maillog3;
MERGE maillog1 maillog2;
BY num;
(合并完成后还有一步去去重并选择最后一个,所以首先要对新的合并集进行排序,以email 跟num进行排序)
PROC SORT DATA=maillog3;
BY email num;
(至此第三部分   合并并排序完成)


(最后部分用last进行,将最后的记录筛选出来)
Data maillog4 maillog5;
set maillog3;
by email;
(根据email进行排序)
if last.email then output maillog4;
else output maillog5;
run;
(运用last对变量进行筛选并分别输出)
PROC print data=maillog4;
(maillog4就是我们所要的数据集将其print)
TITLE 'Last Result';
RUN;








然后是第二种思路    主要对于maillog1这个数据集  input  邮箱上
由于我一开始是以@‘to remote’,那么就像论坛有些帖子说的  就漏掉local的 ,那么我单独再加一个只有num 以及(to local)的email
代码如下:
data maillog2;
INFILE 'D:\homework\第3周\maillog.txt';
input @' delivery ' num 4. @'local' email :$50.;
(单独读取local后的邮箱)
IF index(email,'/10')=0 ;
(读取后发现有一些数据为1/10 2/10   统统为十分之几则  将其都去除)
IF index(email,'dataguru@phx1-ss-2-lb.cnet.com')>0;
(在上一步后结果中发现在email中有不是邮箱格式的,发现在文本文件中有两个local后是返回结果,且提取出来的邮箱都一致,个人还是认为这邮箱没啥用,不知道是不是发送本地邮箱啥的- -  所以对不是这个邮箱的进行处理)
RUN;
PROC PRINT;
run;
  
最后就是三个数据集 maillog1 2 3的合并   
然后后面一样






不知道我的这个思路  是不是太偏门了- -  就先po出来吧- -


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-10-18 12:09 , Processed in 0.144472 second(s), 29 queries .