stata - 如何在 Stata 中对局部宏进行子集化

标签 stata

假设我有一个包含一些变量名的本地宏

local indep "cat dog pig"

如果我希望宏只包含 catdog,如何从宏中删除 pig

最佳答案

上下文是您想要从列出它们的字符串中删除变量名称。 OP 答案中的 subinstr() 解决方案仅在要删除的文本作为整个变量名称仅出现一次且不作为另一个变量名称的一部分出现时才有效。因此,使用等效但不完全相同的语法从该列表中删除 pig 的结果是

. local names "cat dog pig piglet"

. local names : subinstr local names "pig" "", all

. di "`names'"
cat dog  let

这不是你想要的。解决办法是坚持删除的一定是一个词。在 Stata 中,单词可以或可以用空格分隔(除了用双引号括起来);在 Stata 变量名的情况下,不同的变量名总是不同的词。

. local names "cat dog pig piglet"

. local names : subinstr local names "pig" "", word

. di "`names'"
cat dog  piglet

在处理变量名列表时,Stata 不关心多个空格而不是单个空格,因此也不需要您。但如果他们冒犯了,他们可以减少到单个空间。

另请参阅函数 subinstr()subinword() 以获得本质上相似的方法。在一些旧版本的 Stata 中,对此类函数的字符串长度有相当严格的限制,这使得使用上面使用的构造 : subinstr 对所有但非常短的列表都是可取的。

然而,这是一个完全不同的解决方案:

. local names "cat dog pig piglet"

. local pig "pig"

. local names : list names - pig

. di "`names'"
cat dog piglet

在一个程序中,这通常要好得多,特别是如果你想一次删除几个名字(更常见的是“单词”)。

关于stata - 如何在 Stata 中对局部宏进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892553/

相关文章:

stata - Stata 中的嵌套循环中的 "{ required"

linux - 如何在 Stata for Linux 命令行中执行多行选择?

Stata-迭代 ID 变量的所有值,添加另一个变量的值

stata - Stata 的替代 IDE

r - 自 1960 年 1 月 1 日起将日期时间字符串转换为毫秒的 double 值

r - 让统计学家满意 : Stata vs. R 学生 t 检验

r - 如何像在 Stata 中一样在 R 中使用滞后

variables - 全局宏什么时候删除?

time-series - 在 Stata 中插值数值而不创建新变量

Stata:使用 egen group() 创建唯一标识符