楼主: 神月德
883 4

求sas大神帮忙 [推广有奖]

  • 1关注
  • 0粉丝

本科生

67%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
837 点
帖子
52
精华
0
在线时间
99 小时
注册时间
2015-9-17
最后登录
2018-9-6

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
XE9WYRZ7PYO]O(X6OJ`%Z(J.png ZN~0ME%{5L{I4%MAV2Y@YHY.png 55A20@{{O1EO$SQPK(YFHB4.png
这里有三张图,我要根据sex的取值,如果sex=1 ,然后就取图1的symptom并去除掉存在在图2里的symptom
如果sex=0 ,然后取图1中symptom并去除掉存在在图3里的symptom,望大神指教
二维码

扫码加我 拉你入群

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

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

关键词:MPT Tom SEX

  1. data one;
  2.         input vid sex symptom$40.;
  3. datalines;
  4. 1 1 小猫,小狗,小猪,小羊
  5. 2 0 小狗,小熊,小牛,小鸡
  6. ;
  7. run;

  8. data two three;
  9.         symptom="小鸡,小牛";output two;
  10.         symptom="小狗,小猫";output three;
  11. run;

  12. data want;
  13.         set one;
  14.         if sex=1 then set two(rename=(symptom=sym));
  15.         if sex=0 then set three(rename=(symptom=sym));
  16.         do i=1 to (count(sym,",")+1);
  17.             if count(symptom,scan(sym,i,",")) then do;
  18.                         if i< count(sym,",")+1 then symptom=strip(tranwrd(symptom,scan(sym,i,",")||",",""));
  19.                         else if i=count(sym,",")+1 then  symptom=strip(tranwrd(symptom,","||scan(sym,i,","),""));
  20.                 end;
  21.         end;
  22. run;
复制代码

使用道具

藤椅
神月德 发表于 2016-1-4 10:28:36 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-1-4 09:56
麻烦您解释一下您的基本思路吗。

使用道具

板凳
神月德 发表于 2016-1-4 10:28:40 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-1-4 09:56
麻烦您解释一下您的基本思路吗。

使用道具

if sex=1 then set two(rename=(symptom=sym));
if sex=0 then set three(rename=(symptom=sym));
*根据sex=0或1把symptom重命名后,拼接进去;
do i=1 to (count(sym,",")+1);
*根据逗号的个数+1 判断sym中有几串字符,将这些字符串进入循环逐个判断替换;
if count(symptom,scan(sym,i,",")) then do;
*如果symptom中,出现了sym的第i个字符;
if i< count(sym,",")+1 then symptom=strip(tranwrd(symptom,scan(sym,i,",")||",",""));
else if i=count(sym,",")+1 then  symptom=strip(tranwrd(symptom,","||scan(sym,i,","),""));
*首尾的情况不同,分别处理。尾部替换的是",小狗",前面替换的是"小狗,"。注:此处有一点小bug,如果倒数第二个字符已经替换,最后一个字符应该替换"小狗"而非",小狗";
*tranwrd():字符替换函数;

使用道具

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

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

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

GMT+8, 2024-4-24 10:26