全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
6001 3
2014-02-18
QQ图片20140218151326.jpg

请高手指点一个问题啊

入上图,第一第二列是起始和结束年份,第三列是经过处理的跨年数
现在想要实现的是将每一行经过的年份一行一行的排列出来
比如上图,第一第二行都只有一年,那就只有本身一行
第三行是从86年-93年,那就需要把86,87,88,89,90,91,92,93每一年都分成一行

请问高手这个该通过怎么样的指定,或者有什么思路可以用STATA实现啊?

谢谢大家啦
二维码

扫码加我 拉你入群

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

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

全部回复
2014-2-19 09:32:38
one way: suppose the variables are v1 v2 v3

gen long id = _n
expand v3
sort id, stable
replace v1=v1[_n-1]+1 if id==id[_n-1]
二维码

扫码加我 拉你入群

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

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

2023-11-27 03:29:49
jjjj6666 发表于 2014-2-19 09:32
one way: suppose the variables are v1 v2 v3

gen long id = _n
可以再清楚些吗,没看懂,expend不是把所有数据都复制了吗。感谢
二维码

扫码加我 拉你入群

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

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

2024-12-10 20:08:08
在Stata中实现将每一行数据按照其跨年度进行拆分的需求,可以使用 `expand` 和 `egen` 命令结合循环或自写程序来完成。这里提供一个简单的解决方案:

假设你的数据是这样的:
```
+-------+--------+-----+
| start |  end   | gap |
+-------+--------+-----+
|    86 |     93 |   8 |
|    94 |     95 |   2 |
|    96 |     96 |   1 |
+-------+--------+-----+
```

你可以通过以下步骤来实现:
```stata
* 假设你的数据集已经载入到 Stata 中,并命名为 mydata

clear all
input int start end gap
86 93 8
94 95 2
96 96 1
end

* 使用 expand 指令复制每行对应次数的数据
expand gap, gen(rep)

* 利用 egen 命令生成跨年度的序列
by id: replace start = start + _n - 1 if rep == 1
drop rep gap
```

不过需要注意的是,这里缺少了一个标识每组数据的唯一ID变量。为了解决这个问题,你可以在最开始的时候给每一行数据添加一个ID:

```stata
* 增加 id 变量来区分不同行的数据
gen id = _n

* 使用 expand 指令复制每行对应次数的数据
expand gap, gen(rep)

* 利用 egen 命令生成跨年度的序列,同时保留ID变量以标识每一组数据
bysort id: replace start = start + _n - 1 if rep == 1

* 删除不需要的列
drop rep gap
```

这样你就可以得到一个新数据集,其中每行都表示了原数据集中某一行数据的一个跨年。注意检查你的数据结构和变量名是否与上述示例相符。

最后的数据应该是这样的:
```stata
. list id start, sepby(id)
      +---------+
      | id   start |
      |---------|
  1. |  1       86 |
  2. |  1       87 |
  3. |  1       88 |
  4. |  1       89 |
  5. |  1       90 |
  6. |  1       91 |
  7. |  1       92 |
  8. |  1       93 |
      |---------|
  9. |  2       94 |
10. |  2       95 |
     |---------|
11. |  3       96 |
      +---------+
```

希望这能帮到你!如果还有其他问题,欢迎随时提问。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群