楼主: gundamlf
3518 20

[原创博文] 在這情況,請教如何用解決呢?(急需coding!) [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
60 点
帖子
11
精华
0
在线时间
3 小时
注册时间
2009-10-23
最后登录
2011-3-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一個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
二维码

扫码加我 拉你入群

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

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

关键词:Coding DING COD ING ODI example number 如何

回帖推荐

xiaosanmao 发表于2楼  查看完整内容

data x; input Race_number Horse_code Distance_ran ; cards; 1 1 1 5 1 1 14 1 2 250 25 ...

本帖被以下文库推荐

沙发
xiaosanmao 发表于 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;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

藤椅
gundamlf 发表于 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.

使用道具

板凳
gundamlf 发表于 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;

改了少少,不知可不可以

使用道具

报纸
xiaosanmao 发表于 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;

使用道具

地板
gundamlf 发表于 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未必順序

使用道具

7
xiaosanmao 发表于 2009-11-11 22:47:49 |只看作者 |坛友微信交流群
proc sort;by Race_number;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;

使用道具

8
jingju11 发表于 2009-11-12 00:43:15 |只看作者 |坛友微信交流群
6# gundamlf
  1. data x;
  2. input Race_number  Horse_code Distance_ran     ;
  3. n+1;  *remember the original order;
  4. cards;
  5. 1       1  1
  6. 5       1  1
  7. 14     1  2
  8. 312 25  4
  9. 250 25  1
  10. 260   1  2
  11. 310 25  4
  12. ;
  13. run;

  14. proc sort; by  Horse_code Race_number Distance_ran; run;

  15. data final;
  16.    set x;
  17.    lagHorse_code =lag(horse_code); lagDistance_ran =lag(Distance_ran);
  18.    new_distance =0;
  19.    if lagHorse_code =Horse_code then if lagDistance_ran =distance_ran
  20.       then new_distance =1;
  21.    drop lag:;
  22. run;

  23. *restore the original order;
  24. proc sort data =final out =final (drop =n);  by n;  run;
  25. proc print; run;
复制代码

使用道具

9
gundamlf 发表于 2009-11-14 12:21:15 |只看作者 |坛友微信交流群
jingju11 发表于 2009-11-12 00:43
6# gundamlf [code]data x;
input Race_number  Horse_code Distance_ran     ;
n+1;  *remember the original order;
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 Race_number Distance_ran; run;

data final;
   set x;
   lagHorse_code =lag(horse_code); lagDistance_ran =lag(Distance_ran);
   new_distance =0;
.....code]
紅字的new_dist應該=0,但出現=1

                      Obs   number   code       dist_ran   new_dist
                            1       1        724        1200          0
                            2       1        531        1200          0
                            3       1         62        1200          0
                            4       1        606        1200          0
                            5       1        369        1200          0
                            6       1        548        1200          0
                            7       1        335        1200          0
                            8       1        482        1200          0
                            9       1        393        1200          0
                           10       1        373        1200          0
                           11       1         58        1200          0
                           12       1        594        1200          0
                           13       1         65        1200          0
                           14       2        754        1400          0
                           15       2         69        1400          0
                           16       2        158        1400          0
                           17       2        639        1400          0
                           18       2        649        1400          0
                           19       2        287        1400          0
                           20       2        172        1400          0
                           21       2        216        1400          0
                           22       2         80        1400          0
                           23       2        496        1400          0
                           24       2        132        1400          0
                           25       2        191        1400          1
                           26       3        152        1200          0
                           27       3        399        1200          0
                           28       3        480        1200          0
                           29       3        709        1200          0
                           30       3        328        1200          0
                           31       3        765        1200          0
                           32       3        838        1200          0
                           33       3        632        1200          0
                           34       3         36        1200          1

使用道具

10
jingju11 发表于 2009-11-14 13:04:00 |只看作者 |坛友微信交流群
9# gundamlf


              Horse_     Race_    Distance_                  new_
Obs    Obs     code     number       ran       new_dist    distance
  1      1       1        724        1200          0           1
  2      2       1        531        1200          0           1
  3      3       1         62        1200          0           1
  4      4       1        606        1200          0           1
  5      5       1        369        1200          0           1
  6      6       1        548        1200          0           1
  7      7       1        335        1200          0           1
  8      8       1        482        1200          0           1
  9      9       1        393        1200          0           1
10     10       1        373        1200          0           1
11     11       1         58        1200          0           0
12     12       1        594        1200          0           1
13     13       1         65        1200          0           1
14     14       2        754        1400          0           1
15     15       2         69        1400          0           0
16     16       2        158        1400          0           1
17     17       2        639        1400          0           1
18     18       2        649        1400          0           1
19     19       2        287        1400          0           1
20     20       2        172        1400          0           1
21     21       2        216        1400          0           1
22     22       2         80        1400          0           1
23     23       2        496        1400          0           1
24     24       2        132        1400          0           1
25     25       2        191        1400          1           1
26     26       3        152        1200          0           1
27     27       3        399        1200          0           1
28     28       3        480        1200          0           1
29     29       3        709        1200          0           1
30     30       3        328        1200          0           1
31     31       3        765        1200          0           1
32     32       3        838        1200          0           1
33     33       3        632        1200          0           1
34     34       3         36        1200          1           0
以上是我的SAS运行出的结果。也可能我们根本没有明白你的意思。比如说最后一条记录是horse 3 的第一场,为何不为零?

使用道具

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

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

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

GMT+8, 2024-5-1 08:40