全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4086 20
2009-11-11
我有一個dataset,關於賽馬的,有3個variables,分別為,Race number,Horse code 和 Distance ran.
請教如何可以製造一個新的binary variable,say new_distance,去檢查一隻馬上一場有否在同樣距離作賽.有就=1,沒有就=0
for example,
Race_number     Horse_code       Distance_ran     New_distance
1                               1                           1                              0
5                               1                           1                              1
14                             1                           2                              0
.
.
.
.
250                           25                         1                              0
260                           25                         4                              0
310                           25                         4                              1
二维码

扫码加我 拉你入群

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

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

全部回复
2009-11-11 14:34:13
data x;
input Race_number     Horse_code       Distance_ran     ;
cards;
1                               1                           1                              
5                               1                           1                              
14                             1                           2                              
250                           25                         1                              
260                           25                         4                              
310                           25                         4   
312                         25                         4                              
;run;
proc sort;by  Horse_code Distance_ran;run;
data final;set x;
by  Horse_code Distance_ran;
if first.Horse_code then New_distance=-1;
if  first.Distance_ran then New_distance=-1;
New_distance+1;
if New_distance>1 then New_distance=1;
run;
二维码

扫码加我 拉你入群

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

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

2009-11-11 17:08:46
xiaosanmao 发表于 2009-11-11 14:34
data x;
input Race_number     Horse_code       Distance_ran     ;
                        
......
感謝大大幫助!!!
但有些未解決,以下為output:
                                 Race_    Horse_    Distance_      New_
                      Obs    number     code        ran       distance
                          1         1                 1          1            0
                          2         5                 1          1            1
                          3       250             25          1            1
                          4        14                1          2            0
                          5       260             25          4            0
                          6       310             25          4            1
                          7       312             25          4            1

Horse250第一次跑Distance 1, 應該要出 0 而不是1.
二维码

扫码加我 拉你入群

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

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

2009-11-11 17:22:27
data x;
input Race_number     Horse_code       Distance_ran     ;
cards;
1                               1                           1                              
5                               1                           1                              
14                             1                           2                              
312                         25                         4                              
250                           25                         1                              
260                           25                         4                              
310                           25                         4   

;run;
proc sort;by  Race_number Horse_code Distance_ran;run;
data final;
set x;
by  Horse_code Distance_ran ;
retain New_distance 0;
New_distance+1;
if first.Horse_code & first.Distance_ran  then New_distance=0;
if New_distance>1 then New_distance=1;
run;
proc print;
run;

改了少少,不知可不可以
二维码

扫码加我 拉你入群

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

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

2009-11-11 19:57:09
proc sort;by  Horse_code Distance_ran;run;
data final;set x;
by  Horse_code Distance_ran;
if first.Horse_code then New_distance=-1;
if  first.Distance_ran then New_distance=-1;
New_distance+1;
if New_distance>1 then New_distance=1;
run;
二维码

扫码加我 拉你入群

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

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

2009-11-11 22:31:18
xiaosanmao 发表于 2009-11-11 19:57
proc sort;by  Horse_code Distance_ran;run;
....
謝謝你,但還有些問題
data x;
input Race_number     Horse_code       Distance_ran     ;
cards;
1                               1                           1                              
5                               1                           1                              
14                             1                           2                              
312                         25                         4                              
250                           25                         1                              
260                           1                        2                              
310                           25                         4   
;run;
proc sort;by  Horse_code Distance_ran;run;
data final;set x;
by  Horse_code Distance_ran;
if first.Horse_code then New_distance=-1;
if  first.Distance_ran then New_distance=-1;
New_distance+1;
if New_distance>1 then New_distance=1;
run;
proc print;
run;

                                     Race_    Horse_    Distance_      New_
                         Obs    number     code        ran       distance
                          1               1          1             1            0
                          2               5          1             1            1
                          3              14        1              2            0
                          4            260        1             2            1
                          5           250       25             1            0
                          6           312       25             4            0
                          7           310       25             4            1
紅字New_distance應該是0,但卻出了1
因為race_number未必順序
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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