楼主: lfyxqywb
2702 8

[数据管理求助] 关于双循环的一个问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
142 个
通用积分
0.6000
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
860 点
帖子
52
精华
0
在线时间
132 小时
注册时间
2009-9-5
最后登录
2024-11-30

楼主
lfyxqywb 发表于 2016-3-14 16:32:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,请教一个问题。

1. 我使用一个双循环的命令,得到一个变量。目前的情况是:我有一组dummy varible X1,X2,X3,.....X40, 我想得到另一组dummy variable Y1 Y2 Y3 ....Y40。我使用下面的语法进行的时候,系统总是报错。请指教。
-------------------------------------------------------------------
gen Y1=X1

  forvalues m= 2/40 {
  forvalues n= 1/39 {
gen  Y`m'=Y`n'*Y`m'
}
}
--------------------------------------------------------


二维码

扫码加我 拉你入群

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

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

关键词:双循环 forvalues forvalue Variable varible return

沙发
lfyxqywb 发表于 2016-3-14 20:45:15
求帮助。

藤椅
lfyxqywb 发表于 2016-3-15 09:34:00
UPupUP

板凳
lfyxqywb 发表于 2016-3-16 11:04:48
为什么这个总是报错。

local mm " 101.62 96.36 100.28  103.00  101.07  101.20  101.59"   
local nn "XS132831572321 USG21184AB5221 USY3R559AF9621 XS110402929021 XS110717253521 XS131796714621 XS132812900921"
foreach x of numlist `mm' {  
foreach y of varlist `nn' {
gen return`y'=(`y'-`x')/`x'
}
}

报纸
lfyxqywb 发表于 2016-3-18 14:29:56
求大神指导。

地板
lfyxqywb 发表于 2016-4-28 16:40:38
求指点

7
dqlcsm 发表于 2016-4-28 17:17:54
你那个程序编错了把,我不知道你要做什么,程序应该会报错变量已经命名。
gen  Y`m'=Y`n'*Y`m' , Y`m'这里错了,假设当m=1时,那么进入子循环
时候就有 gen  Y1=Y`n'*Y1,执行子循环第一次时候是  gen  Y1=Y1*Y1,
第二次是  gen  Y1=Y2*Y1,这里就错了,重复定义变量了。

8
lfyxqywb 发表于 2016-5-3 10:22:58
dqlcsm 发表于 2016-4-28 17:17
你那个程序编错了把,我不知道你要做什么,程序应该会报错变量已经命名。
gen  Y`m'=Y`n'*Y`m' , Y`m'这里 ...
你好,谢谢你的帮助。我可能之前没有说清楚。  我希望实现以下的目的,但就如您所说的,系统一直说 the name is already defined. 这个双循环的问题也一直困扰我,不知道如何解决。求帮助

  g indicator30=a30
  forv m= 60(30)150 {
  forv n = 30(30)120{
  ge indicator`m'=a`m'*indicator`n'* b`n'
}
}
以下是数据。 a和b 都是dummy  variable只取 0和 1的值
a30 a60 a90 a120 a150 b30 b60 b90 b120 b150
1    1
1    0
1    1
1
1
0
0
1

9
lfyxqywb 发表于 2016-5-4 15:09:04
我找到了一个解决方法。

  g indicator30=a30
forv m= 60(30)150 {
  ge indicator`m'=.
}

  forv m= 60(30)150 {
  forv n = 30(30)120{
  replace indicator`m'=a`m'*indicator`n'* b`n' if `m'-`n'==30
}
}

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-15 17:56