全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3377 8
2021-07-26
有12种疾病的用药数据,每种疾病的用药都分为了4种情况(只用中药, 中西医结合,只用西药,什么都没用)。现在我想求出所有受访者中,这12种疾病,出现过使用中西医结合的情况。例如,只要某个人在疾病a用了中药,疾病b用了西药,这种情况就可算中西医结合; 某人疾病c用了西药,疾病d用了中西医结合,也算;某人疾病e 用了中药,疾病f用中西医结合也算。
我当前已经把这12种疾病重命名为Dis_1, Dis_2... Dis_12。其中,每个疾病中的4种情况分别赋值, 1(只用中药),2(中西医结合),3(只用西药), 4(什么都没用)。 要求12种疾病合并起来的中西医结合的人数,12种病中只报告了个别病的用药情况的也都算,想用循环语句。个人的思路是 forvalues i=1/12, 但同时应该还有个 forvalues j=1/12, 其中条件是 i !=j,  Dis_i==1| Dis_i==2| Dis_i==3, Dis_j==1| Dis_j==2| Dis_j==3, 是并集的状态。
复制代码
这个语句有大大的错误,但是不知道该怎么写才对。
刚开始用stata,还不太熟练使用forvalues和暂元语句,求大神们指点!
二维码

扫码加我 拉你入群

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

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

全部回复
2021-7-26 15:22:18
是不是没有加暂元的原因

gen medi_usage=.
forvalues i=1/12 {
forvalues j= 1/12 {
replace medi_usage=2 if  (`i' !=`j') & (Dis_`i'==1| Dis_`i'==2| Dis_`i'==3) & (Dis_`j'==1| Dis_`j'==2| Dis_`j'==3)
}
}
二维码

扫码加我 拉你入群

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

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

2021-7-26 16:26:27
wdlbcj 发表于 2021-7-26 15:22
是不是没有加暂元的原因

gen medi_usage=.
谢谢! 我试了下能跑了,用的如下的代码,但是好像结果有点不太对。比如某些行只出现几次==3(使用西药)的情况,就判定为中西医结合(medi_use=2)了。不知道是我的指令逻辑有问题嘛?

复制代码
二维码

扫码加我 拉你入群

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

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

2021-7-29 21:28:04
根据以上条件,当任意一种疾病为中西结合,则medi_use=2
且,当两种疾病都不为4时,只要用药情况不同,则medi_use=2
编写以下程序:
gen medi_use=.
forvalues i=1/12 {
replace medi_use=2 if  Dis_`i'==2
forvalues j=1/12 {
replace medi_use=2 if  &  Dis_`i'!=4 &  Dis_`j'!=4 &  Dis_`i' != Dis_`j'
}
}
二维码

扫码加我 拉你入群

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

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

2021-7-30 14:13:01
罗润万(|Toby) 发表于 2021-7-29 21:28
根据以上条件,当任意一种疾病为中西结合,则medi_use=2
且,当两种疾病都不为4时,只要用药情况不同,则 ...
谢谢!
二维码

扫码加我 拉你入群

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

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

2021-7-31 03:24:03
不太喜欢用循环,我提供一种不用循环的代码吧,似乎更简洁一点,举个例子,你可以把var改成你的Dis就可以了。
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群