全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1979 5
2012-04-15

foreach f in "C:\Users\Administrator\Desktop\\dta\merge(ind).dta" "C:\Users\Administrator\Desktop\\dta\merge2009.dta" "C:\Users\Administrator\Desktop\\dta\merge2010.dta"  {

use `f'

replace mc=mc/100

replace profit=profit/100

gen size1=exp(size)

gen size=size1/100

drop size1

reg mc lever e y

est store a1`f'

reg mc lever size fixed e y

est store a2`f'

keep if ind==1

reg mc lever size fixed e y

est store a3`f'

esttab a1`f' a2`f' a3`f' using a.rtf, append

clear

}

之前运行都正常,到最后一行“}”时出现错误:unvalid '('   r(198)

这是怎么回事呀,请高手们知道一下。非常谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-4-15 23:16:07
use `f' 改成use `"`f'"'或use “`f'”
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-16 10:56:48
痞子胡H 发表于 2012-4-15 23:16
use `f' 改成use `"`f'"'或use “`f'”
恩,改成use “`f'”就可以了,非常谢谢
再请教一下,为什么呀这么改呀?是语法问题吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-16 12:29:07
懒羊羊_^_^ 发表于 2012-4-16 10:56
恩,改成use “`f'”就可以了,非常谢谢
再请教一下,为什么呀这么改呀?是语法问题吗?
有些字符stata可能不能识别(比方你第一个文件的()),你必须告诉它这是字符。
比方local i “char”
此时stata意思是i是个宏变量,且存的是字符型,值为char,而不是“char”。
所以当你再次用宏变量i时,最好加上“”,然后stata就会作为字符处理。

我刚看了下,你后面的程序,应该还是通不过的吧?!你est store a1`f',这里面如果有[()],stata应该也是识别不了的。所以建议你命名文件的时候最好只使用英文字母,下划杠(_)和数字。这种命名基本所有软件都能识别。而你用其他一些东西比方(),空格什么的,就有可能有麻烦了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-16 12:51:36
痞子胡H 发表于 2012-4-16 12:29
有些字符stata可能不能识别(比方你第一个文件的()),你必须告诉它这是字符。
比方local i “char”
此 ...
恩 恩,了解了,谢谢啊!
后面的程序我修改了的,呵呵
foreach f in merge2009ind merge2010ind mergeind {   
use "`f'"
replace mc=mc/100
replace profit=profit/100
gen size1=exp(size)
replace size=size1/100
drop size1
reg mc lever e y
est store a1`f'
reg mc lever size fixed e y
est store a2`f'
keep if ind==1
reg mc lever size fixed e y
est store a3`f'
esttab a1`f' a2`f' a3`f' using a.rtf, append         
clear
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-17 19:17:38
懒羊羊_^_^ 发表于 2012-4-16 10:56
恩,改成use “`f'”就可以了,非常谢谢
再请教一下,为什么呀这么改呀?是语法问题吗?
你好,有麻烦你了,再请教一个问题:
foreach f in mergeLL mergeHL {
use “`f’”
use reg
sort n
merge 1:1 _n using `f’
gen l=b in `f’        这句是错误的,在这里我想实现第一次循环的时候就b in 1 第二次循环的时候就b in 2,这命令该怎么写呢?
egen m=total(l)
gen `f’=m*profit/mc
keep `f’
append using k
save k,replace
clear
}
非常谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群