楼主: dxystata
3934 13

[编程问题求助] 【有奖解答2】从条件表达式中提取变量 [推广有奖]

11
fgleric 发表于 2013-1-8 00:48:18
如果符号只有上面几个,那么
clear
input str20 id
"if age+10=age2"
"if age=50 & sex=1"
end
gen idd=subinstr(id,"if ","",.)
split idd,parse("+""&""=")
egen name=seq()
destring idd*,replace
        foreach v of local idd* {
                capture confirm string variable `v'
                if _rc {
                        drop `v'
                }
                }
reshape long idd,i(name)j(var)
已有 1 人评分经验 论坛币 学术水平 收起 理由
dxystata + 20 + 100 + 1 好的意见建议

总评分: 经验 + 20  论坛币 + 100  学术水平 + 1   查看全部评分

12
dxystata 发表于 2013-1-8 08:29:45
fgleric 发表于 2013-1-8 00:48
如果符号只有上面几个,那么
clear
input str20 id
非常好的思路,谢谢!
程序有点问题,我修改了一下。

clear
input str20 id
"if age+10=age2"
"if age=50 & sex=1"
end
gen idd=subinstr(id,"if ","",.)
split idd,parse("+""&""=")
egen name=seq()
destring idd*,replace
foreach v of varlist idd*  {
capture confirm string variable `v'
        if _rc {
                drop `v'
        }
}
drop idd       
reshape long idd,i(name) j(var)

13
dxystata 发表于 2013-1-8 08:33:21
fgleric 发表于 2013-1-8 00:48
如果符号只有上面几个,那么
clear
input str20 id
如果是
if (age>50 & age~=.)  & sex=="F"
if (age>50 & age~=.)  & sex~="F"
if abs(x)==1 & age >50

谢谢!

14
sungmoo 发表于 2013-1-8 23:40:45
从条件表达式中提取变量
如: if age+10=age2  提取出age age2
        if age=50 & sex=1 提取age sex

提取变量名 放到宏中

每个命令中只有一个if语句,我就是想提取if 语句中变量名

如果数据集中变量很多,运行自己写的命令会很慢,我想在程序中保留变量,但用keep ·varlist’,if 语句后面的变量没有保留,运行if语句会出错。
个人觉得,这里的逻辑是:先确定了变量,才使用if语句,而不是相反。这样,你应该先定义保存变量名的macro,再使用if语句,而不是相反。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-8 20:29