请选择 进入手机版 | 继续访问电脑版
楼主: 妍娘
1029 8

[问答] 小白请教(不知道怎么描述,问题详见帖内) [推广有奖]

  • 0关注
  • 0粉丝

高中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0.1690
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
542 点
帖子
7
精华
0
在线时间
67 小时
注册时间
2012-9-26
最后登录
2023-11-16

妍娘 发表于 2014-5-9 08:58:35 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
遇到难题了,请教各位大侠:
数据表如下,数据按编号、日期、公司排序后,按下面条件对其计数:
每组第一个肯定=0,'公司'=组内第一个个案的也为0,'公司'不等于组内第一个个案公司值的则=1,也就是以每组内出现时间最早的为公司值为参照,和它一样的就计数0,不一样的都为1。比如编号为1的组内,公司为A的都计数为0,公司为B和C的都计数为1;编号为2的组内,公司为D的都计数为0,编号E和F的d都计数为1……
⊙﹏⊙b汗,不知道说明白了没有?
有好心人教我吗?先谢谢啦!

QQ截图20140509085939.png
二维码

扫码加我 拉你入群

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

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

关键词:不知道 各位大侠 好心人 数据表 下面条 好心人 数据表

QQ截图20140509084857.png
妍娘 发表于 2014-5-9 09:11:50 |显示全部楼层 |坛友微信交流群
各位大侠,急急急,在线等。。。。。。

使用道具

mingfeng07 学生认证  发表于 2014-5-9 16:11:39 |显示全部楼层 |坛友微信交流群
你的数据感觉有点小问题,我给出了通常情况下的数据列表及处理情况,当然也适用你的这一种数据,见如下代码:
  1. data a;
  2. input id  cor $ date;
  3. cards;
  4. 1 B 1
  5. 1 A 2
  6. 1 A 3
  7. 1 B 4
  8. 1 B 5
  9. 1 A 6
  10. 2 C 7
  11. 2 C 8
  12. 2 D 9
  13. 2 D 10
  14. 2 C 11
  15. ;
  16. run;
  17. proc sort data=a;by id date cor;run;
  18. data b(keep=id cor count);
  19. set a;
  20. by id date cor;
  21. if first.id;
  22. count=0;
  23. run;
  24. proc sql;
  25. create table c as select a.id,a.cor,date,count from a left join b on a.id=b.id and a.cor=b.cor;
  26. quit;
  27. data test;
  28. set c;
  29. if count=. then count=1;
  30. run;
  31. proc sort data=test;by id date cor;run;
复制代码
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

妍娘 发表于 2014-5-9 16:17:23 |显示全部楼层 |坛友微信交流群
楼上先握爪感激!守了大半天终于有人回复了,激动!我去试试先……

使用道具

eric_darcy 发表于 2014-5-10 12:06:55 |显示全部楼层 |坛友微信交流群
再补充提问下,如果是在同一个ID 1 2中增加几组不同的cor,我要在同一ID号中依据不同的cor来增加序列号,1,2,3,4那种,请问逻辑是如何写的啊?谢谢

使用道具

eric_darcy 发表于 2014-5-10 12:13:37 |显示全部楼层 |坛友微信交流群
其实可以先去重下,再排序,再left join下也OK~~~~~~不晓得有没有更好的办法。谢谢!

使用道具

mingfeng07 学生认证  发表于 2014-5-10 20:49:02 |显示全部楼层 |坛友微信交流群
eric_darcy 发表于 2014-5-10 12:06
再补充提问下,如果是在同一个ID 1 2中增加几组不同的cor,我要在同一ID号中依据不同的cor来增加序列号,1, ...
  1. data a;
  2. input id  cor $ date;
  3. cards;
  4. 1 B 1
  5. 1 A 2
  6. 1 A 3
  7. 1 B 4
  8. 1 B 5
  9. 1 A 6
  10. 2 C 7
  11. 2 C 8
  12. 2 D 9
  13. 2 D 10
  14. 2 C 11
  15. ;
  16. run;

  17. proc sort data=a out=b nodupkey;by id cor;run;
  18. proc sort data=b;by id date cor;run;
  19. data c(drop=date);
  20. set b;
  21. by id date;
  22. if first.id then count=1;
  23. else count+1;
  24. run;
  25. proc sql;
  26. create table test as select a.id,a.cor,a.date,count from a left join c on a.id=c.id and a.cor=c.cor order by id,date;
  27. quit;
复制代码
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

mingfeng07 学生认证  发表于 2014-5-10 20:55:24 |显示全部楼层 |坛友微信交流群
eric_darcy 发表于 2014-5-10 12:13
其实可以先去重下,再排序,再left join下也OK~~~~~~不晓得有没有更好的办法。谢谢!
目前只想到这一种
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

eric_darcy 发表于 2014-5-10 23:05:54 |显示全部楼层 |坛友微信交流群
mingfeng07 发表于 2014-5-10 20:55
目前只想到这一种
多谢将逻辑付诸行动,学习了

使用道具

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

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

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

GMT+8, 2024-3-29 06:53