楼主: 懒羊羊_^_^
1810 5

[其他] foreach循环运行错误 [推广有奖]

  • 0关注
  • 0粉丝

初中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
2.6307
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
481 点
帖子
10
精华
0
在线时间
22 小时
注册时间
2012-3-31
最后登录
2012-12-2

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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)

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

二维码

扫码加我 拉你入群

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

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

关键词:foreach Reach 运行错误 For Desktop

沙发
痞子胡H 发表于 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'”就可以了,非常谢谢
再请教一下,为什么呀这么改呀?是语法问题吗?

使用道具

板凳
痞子胡H 发表于 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
}
非常谢谢!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 00:47