楼主: 日复一日12
2407 8

[编程问题求助] forvalues后面可以加函数表达式吗? [推广有奖]

  • 0关注
  • 1粉丝

已卖:133份资源

讲师

17%

还不是VIP/贵宾

-

威望
0
论坛币
1151 个
通用积分
43.6279
学术水平
10 点
热心指数
18 点
信用等级
11 点
经验
11224 点
帖子
155
精华
0
在线时间
685 小时
注册时间
2012-3-26
最后登录
2025-1-23

楼主
日复一日12 发表于 2014-5-4 21:25:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大神好!
目前需要处理一个数据,要用到forvalues 循环,但是循环的终值,也就是停止的部分,需要由一个变量的最大值来确定,我可以写成:
forvalues i = 1 (1) max(i_n) {
XXX
xxx
}
end
x

这种形式吗?i_n是一个变量,大小每张表格不一样
我用这种方式跑过,提示语法错误,有什么好办法能处理forvalues的终值不确定的情况呢?
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:forvalues forvalue values value forv

沙发
╰不滅信念 学生认证  发表于 2014-5-4 21:38:48
后面是不能跟表达式的,只能是一个“定值”,所以只能先新建一个变量将max(i_n)保存起来
写在循环前面:
  1. egen maxval = max(i_n)
  2. local maxval_1 = maxval[1]
复制代码
循环里写成
  1. forvalues i = 1 / `maxval_1' {
  2. xxx
  3. xxx
  4. xxx
  5. }
复制代码
最后
  1. drop maxval
复制代码
总感觉多此一举,容易的问题写这么多条语句
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
经济大菜鸟 + 1 + 1 + 1 精彩帖子
日复一日12 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

where there is a will there is a way

藤椅
日复一日12 发表于 2014-5-5 09:16:22
╰不滅信念 发表于 2014-5-4 21:38
后面是不能跟表达式的,只能是一个“定值”,所以只能先新建一个变量将max(i_n)保存起来
写在循环前面:循 ...
能不能先sum
然后local max = r(max)
这个存的是不是最大值?

板凳
╰不滅信念 学生认证  发表于 2014-5-5 11:33:13
日复一日12 发表于 2014-5-5 09:16
能不能先sum
然后local max = r(max)
这个存的是不是最大值?
这样做好像得出空值
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
日复一日12 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

where there is a will there is a way

报纸
ywh19860616 发表于 2014-5-5 12:24:12
日复一日12 发表于 2014-5-5 09:16
能不能先sum
然后local max = r(max)
这个存的是不是最大值?
  1. sum var
  2. forv i=1/`=r(max)' {
  3. do something
  4. }
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
日复一日12 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

一份耕耘,一份收获。

地板
日复一日12 发表于 2014-5-5 16:35:12
ywh19860616 发表于 2014-5-5 12:24
谢谢,我用的是
sum var
local max = r(max)
for i = 1/`max' {
}
你的做法更快 学习了

7
日复一日12 发表于 2014-5-5 16:35:48
╰不滅信念 发表于 2014-5-5 11:33
这样做好像得出空值
用了这样的办法
sum var
local max = r(max)
for i = 1/`max' {
}
貌似可以用 还得再看看
谢谢大神

8
sungmoo 发表于 2014-5-5 17:12:19
*以下可以省一步:
su var
forv i=1/`=r(max)'{
……
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

9
╰不滅信念 学生认证  发表于 2014-5-5 17:43:36
sungmoo 发表于 2014-5-5 17:12
*以下可以省一步:
su var
forv i=1/`=r(max)'{
正解!学习了
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
经济大菜鸟 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

where there is a will there is a way

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

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