楼主: qq1032450349
11254 8

请教levelsof命令和foreach语句 [推广有奖]

  • 5关注
  • 1粉丝

硕士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
300 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
391 点
帖子
91
精华
0
在线时间
198 小时
注册时间
2012-6-29
最后登录
2020-12-13

楼主
qq1032450349 发表于 2017-3-21 16:01:55 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教一下,我按照stata的帮助文件里的levelsof命令的说明,利用auto数据集,写了如下命令:
levelsof rep78, local(mylevs)

foreach c of local mylevs{
display "`c'"


执行第一行levelsof命令后,结果是1 2 3 4 5
执行第二行foreach语句后,结果并没有出现1 2 3 4 5??不知道为什么??
二维码

扫码加我 拉你入群

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

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

关键词:foreach Levels Level Reach Leve

沙发
qq1032450349 发表于 2017-3-21 19:43:07
问到答案了,应该是吧levelsof和foreach语句一起执行就对了

藤椅
逍遥梦蝶 发表于 2017-3-21 21:45:56
因为使用levelsof定义的是一个局部宏(local macro),局部宏只在一次运行中有效,因而在使用局部宏时需要将定义局部宏的语句和后续引用局部宏的语句一次执行。

板凳
qq1032450349 发表于 2017-3-22 08:21:52
逍遥梦蝶 发表于 2017-3-21 21:45
因为使用levelsof定义的是一个局部宏(local macro),局部宏只在一次运行中有效,因而在使用局部宏时需要将 ...
学习了,谢谢

报纸
康乐村小白 学生认证  发表于 2020-6-9 16:52:36
逍遥梦蝶 发表于 2017-3-21 21:45
因为使用levelsof定义的是一个局部宏(local macro),局部宏只在一次运行中有效,因而在使用局部宏时需要将 ...
请问用什么命令可以定义全局宏呢?

地板
zdlspace 学生认证  发表于 2020-12-31 11:30:26
康乐村小白 发表于 2020-6-9 16:52
请问用什么命令可以定义全局宏呢?
global

7
海阔天空锦鲤 学生认证  发表于 2021-7-14 11:32:43
zdlspace 发表于 2020-12-31 11:30
global
请问levelsof只能运行一次,我的stata整体没关;但是重新打开use dta表,再运行命令(调用levelsof 后),就使用不了了,如下。第一次运行可以,再运行一次就没变化了:
use city, clear
levelsof city, local(city)  // Restore city names in a local macro named city
gen city1 = ""
foreach c of local city {
replace city1 = "`c'" if strmatch(firm, "*`c'*")
}

原文链接https://bbs.pinggu.org/thread-5778694-1-1.html
请问如何可以反复调用呢,谢谢!

8
zdlspace 学生认证  发表于 2021-7-14 11:45:47
海阔天空锦鲤 发表于 2021-7-14 11:32
请问levelsof只能运行一次,我的stata整体没关;但是重新打开use dta表,再运行命令(调用levelsof 后), ...
听不懂你的要求

9
海阔天空锦鲤 学生认证  发表于 2022-10-29 23:50:03 来自手机
zdlspace 发表于 2021-7-14 11:45
听不懂你的要求
不好意思,没有描述清楚。现在我碰到了类似的问题,例如
input v1  v2
1 a
1 b
1 c
2 a
3 a
3 c
4 a
4 b
end
想要将这组数处理为
v1 v2 v3
1 a a,b,c
1 b a,b,c
1 c a,b,c
2 a a,
3 a a,c
3 c a,c
4 a a,b
4 b a,b
根据v1,把所有v1,同一个v1对应的v2中的种类用,拼成新变量v3
我尝试了levelsof v1,local(v1)
gen v3=""
foreach i of local v1 {
levelsof v2 if v1=="`i'"
replace v3="`v2'" if v1=="`i'"
}
但是写不进去v3,请问您知道如何实现么,感谢解答!!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 22:15