楼主: lulu66898
3746 1

[技术讨论与投票] SAS筛选字符串变量中的特定变量和删除重复字符 [推广有奖]

  • 0关注
  • 1粉丝

博士生

31%

还不是VIP/贵宾

-

威望
0
论坛币
1671 个
通用积分
4.4127
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
643 点
帖子
48
精华
0
在线时间
461 小时
注册时间
2009-4-9
最后登录
2024-3-12

50论坛币
现在的数据结构如下,数据条数有十万多,想问问是否有比较方便的程序可以实现下列3种目的(尤其是第1/2两个问题),万分感谢。
stkcd         year     name               post
000001      2010     a1        总经理、董事长
000001      2011     a1       副总经理
300243       2011    a3       董事长、总经理、财务总监
300243      2012     a3       财务总监、董事长、总经理
300243      2013     a4       财务总监、总经理助理
300244      2014     a5       总经理、董事、总经理
300245      2014     a6       总经理

希望可以在变量post中进行如下两种处理:
1. 筛选出含有“总经理”(精准的,不含副总经理、总经理助理之类)


2. 原数据Post变量中会出现重复字符,如“总经理、董事、总经理”,有没有什么方法,可以把这些重复字符删除,整理为“总经理、董事”这样的格式
3. 调整post 字符内变量顺序,是否有方法使得,如果post变量中字符的顺序调整为:董事长、董事、总经理、...(其他职位)

关键词:300243 000001 300245 300244 总经理助理
沙发
wwang111 发表于 2018-6-28 11:45:51 |只看作者 |坛友微信交流群
  1. data test;
  2. input stkcd $8. year  name   $  post : $100.;
  3. cards;
  4. 000001      2010     a1       总经理、董事长
  5. 000001      2011     a1       副总经理
  6. 300243      2011     a3       董事长、总经理、财务总监
  7. 300243      2012     a3       财务总监、董事长、总经理
  8. 300243      2013     a4       财务总监、总经理助理
  9. 300244      2014     a5       总经理、董事、总经理
  10. 300245      2014     a6       总经理
  11. ;

  12. /*问题 1*/

  13. data t1;
  14. set test;
  15. where indexw(post,"总经理"," 、");
  16. run;

  17. /*问题 2, 3*/

  18. * post 变量顺序;

  19. proc format;
  20. invalue ord "董事长"=1
  21.             "董事"=2
  22.                         "总经理"=3
  23.                         "副总经理"=4
  24.                         "总经理助理"=5
  25.                         "财务总监"=6;
  26. run;

  27. * 处理数据;

  28. data t21;
  29. set test;
  30. i=1;
  31. do until(scan(post,i,'、')="");
  32.   _post=scan(post,i,"、");
  33.    __post=input(_post,ord.);
  34.   output;
  35.   i+1;
  36. end;
  37. keep stkcd year name _post __post;
  38. run;

  39. proc sql;
  40. create table t22 as
  41. select distinct * from t21
  42. order by stkcd, year, name, __post;
  43. quit;

  44. proc transpose data=t22 out=t23(drop=_:);
  45. by stkcd year name;
  46. var _post;
  47. run;

  48. data t2;
  49. set t23;
  50. post=catx("、",of col:);
  51. drop col:;
  52. run;
复制代码

使用道具

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

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

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

GMT+8, 2024-4-25 06:46