8328 21

[面板数据求助] STATA 求问如何按公司ID得到面板数据今年减去年的值 万分感激! [推广有奖]

11
林绛绿与关绯色 发表于 2015-7-19 05:26:10
夏目贵志 发表于 2015-7-19 04:38
没关系的~一般情况下我都会尽可能和本人沟通的,不会不先联系就直接禁言的。以后如果有这类事情也可以联系 ...
谢啦  那个 那我问的问题你知道是怎么回事吗

12
夏目贵志 发表于 2015-7-19 06:36:59
林绛绿与关绯色 发表于 2015-7-19 05:26
谢啦  那个 那我问的问题你知道是怎么回事吗
我这里无法再现你说的问题。
  1. . xtset var1 var2
  2.        panel variable:  var1 (weakly balanced)
  3.         time variable:  var2, 1990 to 1996
  4.                 delta:  1 unit
  5. r; t=0.01 18:39:11

  6. . bys var1: gen diff1=d.var3
  7. (2 missing values generated)
  8. r; t=0.00 18:39:14

  9. . gen diff2=d.var3
  10. (2 missing values generated)
  11. r; t=0.01 18:39:18

  12. . list

  13.      +------------------------------------+
  14.      | var1   var2   var3   diff1   diff2 |
  15.      |------------------------------------|
  16.   1. |    1   1995      1       .       . |
  17.   2. |    1   1996      3       2       2 |
  18.   3. |    2   1990      2       .       . |
  19.   4. |    2   1991      5       3       3 |
  20.      +------------------------------------+
复制代码

13
夏目贵志 发表于 2015-7-19 06:38:18
bysort是没必要的。xtset过的数据Stata知道尊重ID,用d.varname的时候不会跨ID求值的。当然,就像我上面的例子一样,就算你用了bysort也不会有任何错误。上面例子里diff1和diff2是一样的。

14
liuding1111 发表于 2015-7-19 08:26:51
楼主的问题应该是你的roa变量中含有非典型的缺漏值,比如你贴出来的n6,这样会导致roa这个变量以字符形式存储,差分后都是缺漏。应该将字符型的缺漏替换成" ",然后再将字符变量数字化,再使用你的代码就能得到你想要的结果了。

15
夏目贵志 发表于 2015-7-19 09:35:34
liuding1111 发表于 2015-7-19 08:26
楼主的问题应该是你的roa变量中含有非典型的缺漏值,比如你贴出来的n6,这样会导致roa这个变量以字符形式存 ...
我觉得那个n6就是不小心打错字了而已~看楼主自己怎么说吧~

16
林绛绿与关绯色 发表于 2015-7-19 21:36:15
夏目贵志 发表于 2015-7-19 06:36
我这里无法再现你说的问题。
谢谢啦 我也是按这个方法 但显示所有dif 都是missing value

17
林绛绿与关绯色 发表于 2015-7-19 21:38:30
liuding1111 发表于 2015-7-19 08:26
楼主的问题应该是你的roa变量中含有非典型的缺漏值,比如你贴出来的n6,这样会导致roa这个变量以字符形式存 ...
是我打错了 哈哈 不好意思 就是6 不过这些数据都是我编的 真正的数据不太一样 不过请问下如果是以CSV格式导入的 是不是所有数据就是字符格式不是数字格式啊

18
林绛绿与关绯色 发表于 2015-7-19 21:41:03
夏目贵志 发表于 2015-7-19 09:35
我觉得那个n6就是不小心打错字了而已~看楼主自己怎么说吧~
的确是不小心打错了

19
林绛绿与关绯色 发表于 2015-7-19 21:44:41
liuding1111 发表于 2015-7-19 08:26
楼主的问题应该是你的roa变量中含有非典型的缺漏值,比如你贴出来的n6,这样会导致roa这个变量以字符形式存 ...
对了 实际的roa数据中含有#N/A,这个会影响吗, 应该怎么处理呢 谢谢啦



20
liuding1111 发表于 2015-7-20 11:14:32
林绛绿与关绯色 发表于 2015-7-19 21:44
对了 实际的roa数据中含有#N/A,这个会影响吗, 应该怎么处理呢 谢谢啦
嗯嗯,那就是我提及的问题,你的代码是完全正确的,但是只能是针对数字型变量。不同的数据文件对缺漏值的定义不同,比如楼主的数据从CSV格式导入,原始数据对缺漏的定义为#N/A,当你导入到Stata中,这个缺漏形式不能被Stata所识别,所以导致你的整个变量都是以字符形式而不是以数字形式存储,这在处理原始数据的过程中非常普遍,所以你需要在Stata中进行转换。使用replace roa = " " if  roa == "#N/A",然后destring roa, replace,就将roa变量数字化了,并且恰当地定义了缺漏,再使用你先前的计算代码就能得到楼主想要的结果了。

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

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