楼主: Brdic
13701 15

[数据管理求助] 请教一个stata的矩阵计算方法 [推广有奖]

11
老树皮 发表于 2013-7-21 20:37:33
Brdic 发表于 2013-7-20 17:00
感谢回复!
我重新研究了一下程序,
merge 1:1 mat`i' using `tmp',keep(match master) 意思是要把数据 ...
merge 1:1 mat`i' using `tmp',keep(match master) 意思是要把数据文件和矩阵文件匹配起来,因此应该有个临时文件来放数据文件,前面没有写这句,所以gen mat`i'=X 这句也执行不了。

为什么说前面没有呢?`tmp' 在loop外面已经保存过了啊。在loop中只不过使用不同的变量重新排序并再次保存的。

我重新改了下,但是最后
replace y2=`mean' in `i' 这一句命令没有把均值放在第i行,我单独运行时提示是0个值发生改变,不知怎么回事

Sorry,这是一个typo,打字的时候打错了。这个应该将local mean=s(mean)改为local mean=r(mean). sum 命令的所有结果都存在r()中,你可以使用return list查看sum运算的所有结果。

另外,根据
save `tmp',replace
qui des /* quietly  describe*/
local k=r(k)
k是根据tmp这个文件来定义,是不是一直要打开tmp这个文件k才能循环,因为中间我又打开了数据文件,这样才能提取x,并合并,最后执行这个循环好像循环不了了。
k是根据tmp这个文件来定义不错,但是一旦定义好了之后,就跟这个临时文件没关系了。k只表示有多少个变量。

还有,实际上我是面板数据,上面的程序只是完成了一个年份的,如果要把所有年份的都弄一遍,是不是还要弄个大循环?

你可以做嵌套循环。外循环是基于年的,内循环基于国家。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

12
Brdic 发表于 2013-7-30 09:41:28
老树皮 发表于 2013-7-21 20:37
merge 1:1 mat`i' using `tmp',keep(match master) 意思是要把数据文件和矩阵文件匹配起来,因此应该有个 ...
非常感谢!问题解决了。我弄了个嵌套程序把年份也弄好了。
只是snapshot还没太习惯用。
顺便问一下,前面给的程序里面gen mat`i'=X这句执行不了,x是另一个数据文件里的,不知是不是笔误呢?
总之非常感谢,又学了些stata的编程方法。

13
老树皮 发表于 2013-7-30 16:25:20
Brdic 发表于 2013-7-30 09:41
非常感谢!问题解决了。我弄了个嵌套程序把年份也弄好了。
只是snapshot还没太习惯用。
顺便问一下,前 ...
这个不是typo,因为前面有一句snapshot restore 1,这个就是又回到主数据中了。

14
Brdic 发表于 2013-7-31 15:49:56
老树皮 发表于 2013-7-30 16:25
这个不是typo,因为前面有一句snapshot restore 1,这个就是又回到主数据中了。
好的,因为我没有用snapshot,所以不管了,反正已经弄出来了。非常感谢!!!!

15
yuan122600 发表于 2014-11-13 23:30:12
好好学习,天天向上!

16
楚天江南客 学生认证  发表于 2018-5-16 07:31:11
学习一下!

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

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