楼主: qinly10
7548 6

sas中的多分类条件重新赋值问题 [推广有奖]

  • 1关注
  • 0粉丝

已卖:1份资源

本科生

92%

还不是VIP/贵宾

-

威望
0
论坛币
361 个
通用积分
4.2000
学术水平
5 点
热心指数
4 点
信用等级
3 点
经验
2327 点
帖子
66
精华
0
在线时间
164 小时
注册时间
2010-12-1
最后登录
2024-12-21

楼主
qinly10 发表于 2012-12-14 09:42:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,我有一列数据ca,要生成一列数据icd,满足条件:ca的值只要包含"肝",那么icd='c22';包含"肠",icd='c18-20';包含"肺",icd='c33'。例如:

ca icd
原发性肝癌 c22
肝癌 c22
结肠癌c18-20
直肠癌c18-20
肺癌c33
支气管肺癌c33
肺中叶恶性肿瘤c33

之前用的是where语句,分成若干个子集后做的,非常麻烦。请问有没有一个简单一些的方法来实现?




二维码

扫码加我 拉你入群

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

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

关键词:多分类 Where 请问有没有 HERE 恶性肿瘤 结肠癌 直肠癌 原发性 支气管 where

回帖推荐

playmore 发表于5楼  查看完整内容

1.在字符串中查找某一特定子串并返回子串在原字符串中的位置: Position=FIND(target,value); 若子串已查到,则返回其第一次出现的位置,否则返回0。modifiers可能为I或T,I代表大小写不敏感,T代表忽略后方空格,默认为大小写敏感且不忽略后方空格。startpos是一个整数代表了开始查找的起点(用大小表示)和方向(用正负表示),默认为从第1个字符开始向后顺次查找。这两个参数以及参数中字母的顺序是 ...

webgu 发表于3楼  查看完整内容

data demo; length ca $20; input ca $ ; datalines; 原发性肝癌 肝癌 结肠癌 直肠癌 肺癌 支气管肺癌 肺中叶恶性肿瘤 ; data want; set demo; if find(ca,"肝") then icc="c22"; else if find(ca,"肠") then icc="c18-20"; else if find(ca,"肺") then icc="c33"; run;

a6566792 发表于2楼  查看完整内容

if index(ca,'肝') and index(ca,'肺') then icd='c33'; else if index(ca,'肝') then icd='c22'; else if index(ca,'肺') then icd='c18-20'; else icd='wrong';

沙发
a6566792 在职认证  发表于 2012-12-14 10:06:38
if index(ca,'肝') and index(ca,'肺') then icd='c33';
else if index(ca,'肝') then icd='c22';
else if  index(ca,'肺') then icd='c18-20';
else icd='wrong';

藤椅
webgu 发表于 2012-12-14 10:23:15
data demo;
length ca $20;
  input ca $  ;
datalines;
原发性肝癌
肝癌
结肠癌       
直肠癌
肺癌
支气管肺癌       
肺中叶恶性肿瘤       
;

data want;
   set demo;
       if find(ca,"肝") then  icc="c22";
else if find(ca,"肠") then icc="c18-20";
else if find(ca,"肺")  then icc="c33";
run;
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

板凳
pingguzh 发表于 2012-12-14 11:24:19
用find函数和index函数有什么区别吗?
统计爱好

报纸
playmore 发表于 2012-12-14 11:32:44
pingguzh 发表于 2012-12-14 11:24
用find函数和index函数有什么区别吗?
        1.在字符串中查找某一特定子串并返回子串在原字符串中的位置:
        Position=FIND(target,value<,modifiers,startpos>);
        若子串已查到,则返回其第一次出现的位置,否则返回0。modifiers可能为I或T,I代表大小写不敏感,T代表忽略后方空格,默认为大小写敏感且不忽略后方空格。startpos是一个整数代表了开始查找的起点(用大小表示)和方向(用正负表示),默认为从第1个字符开始向后顺次查找。这两个参数以及参数中字母的顺序是任意的。

        2.在字符串中查找某一特定子串并返回子串在原字符串中的位置:
        Position=INDEX(target,value);
        与FIND功能基本一样,唯一的区别是不包含modifiers,startpos选项。
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

地板
webgu 发表于 2012-12-14 11:51:24
pingguzh 发表于 2012-12-14 11:24
用find函数和index函数有什么区别吗?
find 是index的升级版。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

7
yongyitian 发表于 2012-12-16 00:56:20
/* use PROC FORMAT */
data test;
input ca $;
datalines;
PLC
LC
CC
RC
LC
BC
LMM
cancer
; run;
proc print data=test_data; title 'test'; run;

proc format;
   value $CType  'PLC' = 'c22'
                                'LC'  = 'c22'
                                                                'CC' = 'c18-20'
                                                                'RC' = 'c18-20'
                                                                'LUC' = 'c33'
                                                            'BC' = 'c33'
                                                                'LMM' = 'c33'
                                                                Other = 'c20';
run;

data test_2;
   set test_data;
   cid = ca;
   format cid $CType.;
run;

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

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