Stata Postfile错误:名称无效

时间:2014-10-21 04:35:18

标签: stata

我在尝试运行代码时遇到了一个奇怪的问题。以下是我的代码示例(注意:我已经在主目录中):

cd "C:/`mydir'" //where `mydir' is the local for the folder containing the fig folder.

use cleaned.dta, clear

local outcome drr_trtd 

tempname post_handle

local postfile_varlist str12(tau_text) double(pt_est se) 

postfile `post_handle' `postfile_varlist' using "fig/dta/es_M12_P11_`outcome'.dta", replace

postclose `post_handle'

use "fig/dta/es_M12_P11_`outcome'.dta", clear

问题在于,每当我尝试运行此代码时,都会收到错误:

postfile `post_handle' `postfile_varlist' using "fig/dta/es_M12_P11_`outcome'.dta", replace
fig/dta/es_M12_P11_drr_trtd.dta invalid name

我认为这可能是因为引号,所以我删除了引号,然后我收到以下错误:

postfile `post_handle' `postfile_varlist' using fig/dta/es_M12_P11_`outcome'.dta, replace
/ invalid name

然后我试着创建没有文件路径的文件,我编辑了postfile命令,如下所示:

postfile `post_handle' `postfile_varlist' using "hello.dta", replace

现在,引用我得到错误:

"hello.dta invalid name

如果没有引用,我会得到相同的错误,但是使用hello.dat。我只是在做一些明显不对的事吗?我不明白为什么我会收到这个错误。

新守则:

local mydir /Users/F H/Desktop/Ray/analysis
cd "C:/`mydir'/" 

tempname post_handle
local postfile_varlist str12(tau_text) double(pt_est se) 
pwd

postfile `post_handle' `postfile_varlist' ///
    using "\fig\dta\event_study_M24_P59_sa.dta" ///
    , replace

我收到错误:

(note: file \fig\dta\event_study_M24_P59_sa.dta not found)
file \fig\dta\event_study_M24_P59_sa.dta could not be opened

2 个答案:

答案 0 :(得分:1)

我似乎无法重现您的错误。一个工作的例子:

sysuse auto, clear

local outcome drr_trtd 

tempname post_handle

local postfile_varlist str12(tau_text) double(my_price myrep)

postutil clear

postfile `post_handle' `postfile_varlist' ///
    using "test/test2/resu_lts_`outcome'.dta", replace

post `post_handle' (make[1]) (price[1]) (rep78[1])

postclose `post_handle'

use "test/test2/resu_lts_`outcome'.dta", clear

list

(我已经创建了相应的测试目录。)

答案 1 :(得分:1)

以下测试对我有用,只要我在当前目录中有写权限,否则不行。

sysuse auto, clear
local outcome drr_trtd 
tempname post_handle
local postfile_varlist str12(tau_text) double(my_price myrep)
postutil clear
postfile `post_handle' `postfile_varlist' using `outcome'.dta, replace
post `post_handle' (make[1]) (price[1]) (rep78[1])
postclose `post_handle'
use `outcome'.dta, clear
list