Stata输入命令不允许本地宏

时间:2017-12-07 02:22:44

标签: stata stata-macros

我在Stata的input命令中发现了这种奇怪的行为。

当您将本地宏作为参数传递给一个变量或多个变量时,input命令会出现此错误:

  

'`'不能读为数字

以下两个例子给出了同样的错误:

clear 
local nums 1 1 1
input a b c
    `nums'
end


clear
local num 1
input a b c 
    1 1 `num'
end

有没有办法将宏传递到input命令?

2 个答案:

答案 0 :(得分:1)

这不会将宏传递给输入命令本身,但它确实达到了你想要的结果,所以这可能有助于你想要做什么?

一般的想法是将变量的值设置为local,然后拆分本地(类似于Excel中的text-to-column按钮)。

clear 
local  nums "1 1 1"
foreach n of local nums {
    if "`nums_2'" == "" local nums_2 "`n'"
    else local nums_2 = "`nums_2'/`n'"
}

set obs 1
gen a = "`nums_2'"
split a, parse("/") gen(b) destring
drop a

答案 1 :(得分:1)

这实际上主要是对Aaron Wolf答案的评论,但是这段代码使得适合身体评论太尴尬了。

考虑到本地的东西,另一种方法是

clear 
local num "1 1 1"
set obs 1 

foreach v in a b c { 
   gettoken this num : num 
   gen `v' = `this'
}

当然,有很多方法可以将11 1变为三个变量。