楼主: zminlin
871 2

请教!非常感谢! [推广有奖]

  • 0关注
  • 0粉丝

大专生

38%

还不是VIP/贵宾

-

威望
0
论坛币
84 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2073 点
帖子
21
精华
0
在线时间
51 小时
注册时间
2009-5-19
最后登录
2022-3-25

楼主
zminlin 发表于 2012-9-29 12:14:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大侠:;
我有这样一组数据集,里面有这样三个变量
i     j    y
1   1    .
1   2    1
1   3    1
2   1    .
2   2    2
2   3    3
5   1    .
5   2    1
5   3    3
9   1    .
9   2    2
9   3    2
9   4    3
9   5    2

i是个体变量; j是不同时间点变量,y是相应的值。我想对于不同的个体,只要他有1个时间点的结果评价是1,那么总的评价结果就是1,没有1的,总的评价结果为0,用总结果替换第一时间点的值,SAS怎么编程啊。最终达到这样结果:
i     j    y
1   1    1
1   2    1
1   3    1
2   1    0
2   2    2
2   3    3
5   1    0
5   2    3
5   3    3
9   1    1
9   2    2
9   3    2
9   4    3
9   5    1

谁会写这个程序啊,帮帮忙吧!非常感谢

二维码

扫码加我 拉你入群

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

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

关键词:非常感谢 怎么编程 各位大侠 第一时间 数据集 怎么编程 第一时间

沙发
ttklkl 发表于 2012-9-29 12:41:31
data raw;
  input i j y;
  cards;
1   1    .
1   2    1
1   3    1
2   1    .
2   2    2
2   3    3
5   1    .
5   2    1
5   3    3
9   1    .
9   2    2
9   3    2
9   4    3
9   5    2
;
run;


proc sort data=raw out=raw1(keep=i y) nodupkey;
  by i;
  where y=1;
run;

data raw2;
  set raw1;
  j=1;
run;

proc sort data=raw2;
  by i j;
run;

proc sort data=raw;
  by i j;
run;

data raw3;
  merge raw(in=a) raw2;
  by i j;
  if a;
run;

data final;
  set raw3;
  if j=1 and y^=1 then y=0;
run;

Stay Hungry. Stay Foolish.

藤椅
yongjiang2 发表于 2012-10-20 21:12:39
data raw;
  input i j y;
  cards;
1   1    .
1   2    1
1   3    1
2   1    .
2   2    2
2   3    3
5   1    .
5   2    1
5   3    3
9   1    .
9   2    2
9   3    2
9   4    3
9   5    2
;
run;

proc sort data=raw out=raw1;
by i descending y;
run;

data raw2;
        set raw1;
        by i;
        retain flag 0;
        if first.i then do;flag=0;y1=y;end;
                if y=1 then do; flag=1; y1=y;end;
                        else if y=. then do;
                                 if flag=1 then do;y1=1;end;
                                                                         else  if flag=0 then do;y1=0;end;
                                                        end;
                                else y1=y;
run;

proc sort data=raw2(keep=i j y1 rename=(y1=y));
by i   j;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 00:26