我想要drop
大量的字符串变量在其观察结果中包含单词“ Other”。因此,我尝试了对drop
所有变量的以下循环:
foreach var of varlist v1-v240 {
drop `var' if `var'=="Other"
}
我得到的是答案“语法错误”。我不仅想知道删除所有包含“ Other”一词的变量的方法,而且还想知道为什么我输入的代码会返回错误。
如果它们是实际的字符串,这应该可以工作:
sysuse auto, clear
ds, has(type string) // get a list of string variables
// loop over each string variable, count observations that contain Buick anywhere, and drop the variable if N>0
foreach var of varlist `r(varlist)' {
count if regexm(`var',"Buick")
if r(N)>0 {
drop `var'
}
}
如果“包含”表示仅包含,则需要使用“ ^ Buick $”代替,或者
count if `var'=="Buick"
当心前导/尾随空格。
if限定符将命令的范围限制为表达式的值为true的那些观察值。代码错误是因为您要求Stata如果某些观察(行)满足条件,则删除变量(列)。您可以使用if限定符删除这些观察值,也可以删除变量,但不能同时删除两个变量。我的代码使用if命令(另一个野兽)来验证条件,然后在满足条件的情况下删除变量。
您可能会想做类似的事情
if `var'=="Other" {
drop `var'
}
但这通常无法按预期方式工作(只有在第一个观察结果为“其他”时,它才会删除变量)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句