全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2810 12
2011-07-03
求高手写代码,附件是数据集。

要求:FLAG= "Yes" , in the following  cases:
   
(1) TYPE="Vomiting"  ;
   
(2) TYPE="Retching",  and its duration >= 5 minutes ;
   
(3) TYPE="Retching",  and it is preceded or followed by a "Vomiting", and the time  between "Retching" and "Vomiting" <= 1 minute ;
   
(4) TYPE="Retching",  and it is preceded or followed by other "Retching" events, and  Ending time of the last event - Beginning time of the first event >= 5  minutes, and the time between any two events <= 1 minute ;
   
我实在是写不出来了,看过别人写的代码,没看懂,怎么看怎么像是错的。由于是真实的数据,所有要求中的(1)(2)两条就把所有的FLAG都置成yes了,无法根据结果判断(3)(4)是否正确。
所以恳求各位高手有时间的话帮我看看。
附件列表

demo.rar

大小:1 KB

 马上下载

本附件包括:

  • demo.sas7bdat

二维码

扫码加我 拉你入群

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

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

全部回复
2011-7-3 10:15:09
lz可以把看到的代码贴出来吗?
二维码

扫码加我 拉你入群

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

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

2011-7-3 18:24:46
这是整篇代码中关于要求的一部分,单独执行这一部分得出的结果和整篇代码得出的结果不一样,但是只有这一部分是符合要求的。

data demo ;  set demo ;  by id stdt descending endt descending type ;

length flag $3 ;  label flag="Emetic episode? (Yes/No)" ;

length pr_type pr1_type pr2_type pr3_type pr4_type pr5_type $8 ;

retain pr_endt pr_stdt pr_type pr1_endt pr1_stdt pr1_type pr2_endt pr2_stdt pr2_type pr3_endt pr3_stdt pr3_type pr4_endt pr4_stdt pr4_type pr5_endt pr5_stdt pr5_type ;

*format pr_endt pr_stdt pr1_endt pr1_stdt pr2_endt pr2_stdt  pr3_endt pr3_stdt pr4_endt pr4_stdt pr5_endt pr5_stdt datetime20.0 ;

if first.id then do ;  
pr_endt=. ;   pr_stdt=. ;   pr_type="" ;   pr1_endt=. ;  pr1_stdt=. ;  pr1_type="" ;
pr2_endt=. ;  pr2_stdt=. ;  pr2_type="" ;  pr3_endt=. ;  pr3_stdt=. ;  pr3_type="" ;
pr4_endt=. ;  pr4_stdt=. ;  pr4_type="" ;  pr5_endt=. ;  pr5_stdt=. ;  pr5_type="" ;
end ;

if stdt>pr1_stdt>. then do ; dif_flag=1 ;  end ;

if type="Vomiting" then flag="Yes" ;
    if type="Retching" then do ;
        if endt-stdt>=60*5 then flag="Yes" ;
        else if pr_type="Vomiting" and .<stdt-pr_endt<=60 then flag="Yes" ;
        else if  .<stdt-pr1_endt<=60 then do ;
            if pr1_type="Retching" then do ;
                if endt-pr1_stdt>=60*5 then flag="Yes" ; else do ;
                    if .<pr1_stdt-pr2_endt<=60 then do ;
                        if pr2_type="Retching" then do ;
                            if endt-pr2_stdt>=60*5 then flag="Yes" ; else do ;
                                if .<pr2_stdt-pr3_endt<=60 then do ;
                                    if pr3_type="Retching" then do ;
                                        if endt-pr3_stdt>=60*5 then flag="Yes" ; else do ;
                                            if .<pr3_stdt-pr4_endt<=60 then do ;
                                                if pr4_type="Retching" then do ;
                                                    if endt-pr4_stdt>=60*5 then flag="Yes" ; else do ;
                                                        if .<pr4_stdt-pr5_endt<=60 then do ;
                                                            if pr5_type="Retching" then do ;
                                                                if endt-pr5_stdt>=60*5 then flag="Yes" ;
                                                            end ;
                                                        end ;
                                                    end ;
                                                end ;
                                            end ;
                                        end ;
                                    end ;
                                end ;
                            end ;
                       end ;
                   end ;
               end ;
           end ;
       end ;
    end ;

pr_type=type ;  pr_stdt=stdt ;  pr_endt=endt ;

if first.id or dif_flag=1 then do ;
pr5_type=pr4_type ;  pr5_stdt=pr4_stdt ;  pr5_endt=pr4_endt ;
pr4_type=pr3_type ;  pr4_stdt=pr3_stdt ;  pr4_endt=pr3_endt ;
pr3_type=pr2_type ;  pr3_stdt=pr2_stdt ;  pr3_endt=pr2_endt ;
pr2_type=pr1_type ;  pr2_stdt=pr1_stdt ;  pr2_endt=pr1_endt ;
pr1_type=type ;   pr1_stdt=stdt ;   pr1_endt=endt ;
end ;

/*drop dif_flag pr: ;*/

run ;
二维码

扫码加我 拉你入群

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

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

2011-7-5 11:08:55
这么多end?看得头晕。。。
二维码

扫码加我 拉你入群

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

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

2011-7-5 11:58:25
头晕!!!!!
二维码

扫码加我 拉你入群

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

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

2011-7-5 12:01:31
我已经头晕了好多天了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群