楼主: jgJason299
907 3

[编程问题求助] 如何在诊断名中挑选胃、食管、贲门等字符? [推广有奖]

  • 0关注
  • 0粉丝

本科生

70%

还不是VIP/贵宾

-

威望
0
论坛币
542 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
372 点
帖子
31
精华
0
在线时间
174 小时
注册时间
2016-10-25
最后登录
2019-8-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在有一个变量cyzd,都是出院诊断。我想生成一个变量zd。

如果cyzd 同时含有“胃”和“食管”, zd=3;
如果cyzd含有贲门,zd=3;
如果cyzd仅含有“胃”,zd=1;
如果cyzd仅含有“食管”,zd=2.

在SAS里直接用 if   index   then  就可以做到了,不知道stata如何实现。
我发现 regexm 函数可以判断一个字符中是否含有另一个字符,但是想完成我上面说的这四个赋值过程似乎有点难度。

希望高手可以赐教。能有直接让我复制粘贴过去就能用的程序就更好啦。谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:Stata Index tata Then 如何实现

沙发
夏目贵志 发表于 2017-3-28 11:58:05 |只看作者 |坛友微信交流群
建议你看看help strpos()是否能实现你想要的功能。

使用道具

藤椅
jgJason299 发表于 2017-3-28 12:20:15 |只看作者 |坛友微信交流群
我最后使用的这个程序。
gen zd=3 if (regexm(cyzd,"胃")==1 & regexm(cyzd,"食")==1)|regexm(cyzd,"贲门")==1
replace zd=2 if zd==. & regexm(cyzd,"食")==1
replace zd=1 if zd==. & regexm(cyzd,"胃")==1
如果在replace后面不加 zd==.的话会导致最后结果不准确,会把一些已经归到贲门的病例抓出来,划分到胃或食管里。
不知道高手能否给出一个用if {........}语句的版本?哪种计算方法更简单呢?

使用道具

板凳
jgJason299 发表于 2017-3-28 12:24:20 |只看作者 |坛友微信交流群
夏目贵志 发表于 2017-3-28 11:58
建议你看看help strpos()是否能实现你想要的功能。
谢谢。不过这个函数是得出某些字符的位置的。在cyzd有三十几种的时候,用strpos得出的结果看上去有点乱。regexm 只有0和1.
请问您知道如何用cmd if 来表达我上面那个程序一样的意思吗?

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

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

GMT+8, 2024-5-8 05:47