楼主: calsunny
1510 6

请教SAS中重新Code一个变量! [推广有奖]

  • 2关注
  • 5粉丝

讲师

84%

还不是VIP/贵宾

-

威望
0
论坛币
3460 个
通用积分
12.8619
学术水平
2 点
热心指数
5 点
信用等级
1 点
经验
1653 点
帖子
468
精华
0
在线时间
732 小时
注册时间
2007-4-3
最后登录
2019-12-3

楼主
calsunny 发表于 2015-1-24 22:17:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果我有个数据是这样的格式:
ID V1  
1   3   
1   3   
2   4   
2   5
3   5
我要重新建立一个变量,要求是对于同一个ID,如果V1的值是一样的,那么这个新变量的一个值是1,其他的是0;同一个ID如果V1的值不一样,那么重新 Code之后的这个变量就都是1。所以我要的新数据是这样的:
ID V1  v2
1   3   1
1   3   0
2   4   1
2   5   1
3   5   1

觉得应该是个很简单的问题,可是想好久都没有做出来。请走过路过的半个忙,先谢谢了。




二维码

扫码加我 拉你入群

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

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

关键词:code COD ODE 新变量

沙发
sushe1527 发表于 2015-1-24 22:39:01
  1. data a;
  2. input ID V1;
  3. cards;
  4. 1   3   
  5. 1   3   
  6. 2   4   
  7. 2   5
  8. 3   5
  9. ;run;
  10. proc sql;
  11.         create table b as
  12.         select*,case when count(distinct(v1))>1 then 1 else 0 end as v2
  13.         from  a group by  id order by id, v1;
  14. quit;
  15. data final;
  16. set b;by id;
  17. if first.id then v2=1;
  18. run;
复制代码

藤椅
calsunny 发表于 2015-1-24 23:34:26
sushe1527 发表于 2015-1-24 22:39
谢谢这么快回复,好像有点不太对
有一点点不对,就是ID中有三个或者以上的值的时候,好像就不对,比如:

ID V1  v2
1   3   1
1   3   0
2   4   1
2   5   1
2   2    1
3   5   1
用你的 Code做出来 ID=2,结果是 1 0 0,我要的v2 的值应该是111,就是同一个ID值不一样的时候,都是1

板凳
sushe1527 发表于 2015-1-24 23:39:22
calsunny 发表于 2015-1-24 23:34
谢谢这么快回复,好像有点不太对
有一点点不对,就是ID中有三个或者以上的值的时候,好像就不对,比如: ...
  1. proc sql;
  2.         create table b as
  3.         select*,case when count(distinct(v1))>1 then 1 else 0 end as v2
  4.         from  a group by  id order by id, v1;
  5. quit;
  6. data final;
  7. set b;by id;
  8. if first.id then v2=1;
  9. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
calsunny + 3 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 3  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

报纸
苹果叶 在职认证  发表于 2015-1-25 23:12:17
  1. proc sort data=a;
  2.   by id v1;
  3. run;

  4. data a1;
  5.   set a;
  6.     by id v1;
  7.   if first.v1 then v2=1;
  8.   else v2=0;
  9. run;
复制代码

地板
sushe1527 发表于 2015-1-25 23:30:43
苹果叶 发表于 2015-1-25 23:12
可以跑一下这个
  1. data a;
  2. input ID V1;
  3. cards;
  4. 1   3   
  5. 1   3   
  6. 2   2   
  7. 2   2
  8. 2   4
  9. 3   5
  10. ;run;
复制代码

7
calsunny 发表于 2015-1-27 23:15:26
sushe1527 发表于 2015-1-25 23:30
可以跑一下这个
I have tried the code. It works. Thank you very much.

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 07:01