全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1376 4
2017-05-31
悬赏 10 个论坛币 已解决
写了一个20多行的宏。感觉只是单纯重复,不是很复杂。但就是有错。。。还不会改。
问了一个高手,高手说stata可以逐行查错,但是她忘了具体语句了。
或者请哪位前辈帮我看看,人工查错吧,就是这么几行语句。
原始文件非常大,而且很机密,就不上传啦。肯定不是字符型或数值型变量的问题。
就是想按照 doi,sex, site三个var的 不同取值,将整个数据分成2*3*2=12个子集,分别计算发病频数和总人口,算出来12个发病率。
程序如下


foreach i in 0 1 2{
foreach j in 1 2{
foreach p of numlist 1/2{
local c  食管 胃
local sex both male female
local doi incidence mortality
local C: word `p' of `c'
local SEX: word `i'  of `sex'
local DOI: word `j'  of `doi'
preserve
keep if sex==`i' & doi==`j' & site=="`C'"
quietly:su freq
local numerator=r(sum)
quietly:su popu
local denominator=r(sum)
di as text "crude `DOI' rate of `C' in `SEX'=" as result `numerator'/`denominator'*100000 as text "/10万"
restore
}
}
}


最佳答案

黃河泉 查看完整内容

哦,对了,loop 一般会比较慢!你也可试试
二维码

扫码加我 拉你入群

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

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

全部回复
2017-5-31 14:51:56
jgJason299 发表于 2017-5-31 15:49
谢谢您。因为我这个数据不能公开,且比较复杂,自己编一个excel做例子又比较麻烦,所以才“出此下策”哒。 ...
哦,对了,loop 一般会比较慢!你也可试试
复制代码
二维码

扫码加我 拉你入群

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

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

2017-5-31 14:58:30
你是纯粹练习写程序还是要真的处理资料问题?如果是后者,应该有更简单之方法(请 show 一个简单例子---包括变量、数字与所要结果)!
二维码

扫码加我 拉你入群

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

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

2017-5-31 15:49:31
黃河泉 发表于 2017-5-31 14:58
你是纯粹练习写程序还是要真的处理资料问题?如果是后者,应该有更简单之方法(请 show 一个简单例子---包括 ...
谢谢您。因为我这个数据不能公开,且比较复杂,自己编一个excel做例子又比较麻烦,所以才“出此下策”哒。
后来我自己检查出来了。如果双引号中的local macro本身也有双引号,那么应该用compound quotation mark去括住他们。我之前不知道这事儿的。。。就这么点小问题。
二维码

扫码加我 拉你入群

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

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

2017-5-31 15:52:52
jgJason299 发表于 2017-5-31 15:49
谢谢您。因为我这个数据不能公开,且比较复杂,自己编一个excel做例子又比较麻烦,所以才“出此下策”哒。 ...
很高兴听到你的问题解决了!至于资料,你其实不用将原始秘密之资料 show 出来,自己编一个有代表性之资料即可!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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