楼主: linpenggen
2560 5

[其他] 使用do文件从数据文件读取变量数据进行计算,为何只能得到第一行数据的结果? [推广有奖]

  • 1关注
  • 4粉丝

吾非鱼!

已卖:474份资源

学科带头人

22%

还不是VIP/贵宾

-

威望
0
论坛币
56392 个
通用积分
59.7398
学术水平
7 点
热心指数
17 点
信用等级
10 点
经验
241995 点
帖子
757
精华
0
在线时间
3273 小时
注册时间
2005-3-23
最后登录
2025-12-26
毕业学校
中南大学

楼主
linpenggen 在职认证  发表于 2012-9-28 08:26:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
程序如下
captu prog drop bino
prog bino
args N p
local i=0
local k=0
while `k'<`N'{
local i=`i'+(Binomial(`N',`k',`p')-Binomial(`N',`k'+1,`p'))*abs(`k'/`N'-`p')
local k=`k'+1
}
gen hm=`i'
end

利用以上程序从数据文件中读取两个变量进行计算,生成的hm变量都是同一个数据,即变量的第一行数据的计算值。
请问高手这个问题如何解决啊
非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:do文件 数据文件 Local while Prog local 程序

沙发
lyc012 在职认证  发表于 2012-9-28 09:05:06
你可以先试设定 set obs N   把值先设为missing value  把gen  hm=`i'  改为 replace hm=`i'  in 'k'  具体我没试  你试试看行不.   估计你的程序在gen hm=`i'  有问题的.  
机会只留给有准备的人

藤椅
linpenggen 在职认证  发表于 2012-9-28 16:48:10
lyc012 发表于 2012-9-28 09:05
你可以先试设定 set obs N   把值先设为missing value  把gen  hm=`i'  改为 replace hm=`i'  in 'k'  具体 ...
非常感谢!
你说的“可以先试设定 set obs N   把值先设为missing value”这个命令怎么写,另外命令replace hm=`i'  in 'k'会显示变量hm不存在!
请教了!
吾非鱼!

板凳
linpenggen 在职认证  发表于 2012-9-28 17:02:31
不知stata中是否可以定位记录?
吾非鱼!

报纸
sungmoo 发表于 2012-9-28 19:04:10
*楼主对问题的表述不很清楚。看看是不是以下结果:

clear all
cap pr drop bino
pr bino
args N p
g hm=.
forv  j=1/`=_N'{
loc i=0
forv k=0/`=`N'[`j']-1'{
  loc i=`i'+(binomial(`N'[`j'],`k',`p'[`j'])-binomial(`N'[`j'],`k'+1,`p'[`j']))*abs(`k'/`N'[`j']-`p'[`j'])
}
replace hm=`i' in `j'
}
end
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
linpenggen + 1 + 1 + 1 解释非常清楚,感谢!

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

地板
linpenggen 在职认证  发表于 2012-9-28 21:34:17
sungmoo 发表于 2012-9-28 19:04
*楼主对问题的表述不很清楚。看看是不是以下结果:

clear all
sungmoo,你是高手啊
再问一个问题,Stata里Binomial()与binomial()是不是不一样,我分别用这两个函数计算同一组数据,得到了不同的结果。
吾非鱼!

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

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