我想drop
所有平均值为0的变量。我使用的代码是
foreach var of varlist _all {
drop 'var' if mean 'var'==0
}
我收到错误消息mean not found
。
我该如何解决这个问题?
答案 0 :(得分:0)
有几个原因可以解决这个问题。首先,考虑这个建议的解决方案:
foreach var of varlist _all {
su `var', meanonly
if r(mean) == 0 drop `var'
}
这也适用于字符串变量,因为对summarize
字符串变量的请求不是非法的,并且平均值将作为缺失返回。
您的代码有什么问题?
问题1.序列
mean `var' == 0
只是幻想语法。没有可以在此上下文中应用的均值函数,如果有,则语法会有所不同。
问题2.您可以使用drop
限定符进行if
观察,也可以使用drop
变量,但不能混合使用语法。甚至很难知道混合意味着什么,但它无论如何都是非法的。这里更深层次的问题是混淆if
命令和if
限定符。另请参阅help
的{{1}}。
问题3.如此处所示,您已使用匹配的引号来表示本地宏引用。可以猜测你真的使用左右引号,否则你会得到不同的错误信息。然而,您键入的代码也不会出于这个原因。
更广泛的评论提醒人们,均值为零并不意味着所有零值。如果您只想drop
个变量值为零,那么drop
( Stata Journal )允许
findname
并且还有允许缺失值的扩展名。