楼主: evarei2
12879 6

[编程问题求助] 请问如何在面板数据中插入若干行 [推广有奖]

  • 0关注
  • 2粉丝

已卖:2183份资源

硕士生

99%

还不是VIP/贵宾

-

威望
0
论坛币
9663 个
通用积分
30.6619
学术水平
15 点
热心指数
15 点
信用等级
10 点
经验
304 点
帖子
60
精华
0
在线时间
353 小时
注册时间
2009-11-16
最后登录
2021-11-23

楼主
evarei2 发表于 2014-7-2 14:19:12 |AI写论文
100论坛币
现有一面数据,部分企业缺失整一年数据,简单如下表所示,企业1缺2010所有数据,企业3缺2009和2011所有数据,stata有没有办法增加整一行数据,将下表 调整成为每个企业都显示四年(增加的年份缺失数据全部设为0)
企业 时间 变量1 变量2
企业1 2009
企业1 2011
企业1 2012
企业2 2009
企业2 2010
企业2 2011
企业2 2012
企业3 2010
企业3 2012

最佳答案

hplcdadong 查看完整内容

Actually you have two different questions in your two posts. 1. As regards to your first question, here is the solution (example): clear input id year var1 1 2009 15 1 2011 4 1 2012 9 2 2009 25 2 2010 45 2 2011 17 2 2012 9 3 2011 8 3 2012 58 end tsset id year tsfill, full mvencode _all, mv(0) 2. As regards to your second question, "merge" diff ...
关键词:面板数据 缺失数据 分企业 数据全 有没有 如何

沙发
hplcdadong 发表于 2014-7-2 14:19:13
Actually you have two different questions in your two posts.

1. As regards to your first question, here is the solution (example):

clear
input id year var1
1  2009   15
1  2011   4
1  2012   9
2  2009   25
2  2010   45
2  2011   17
2  2012   9
3  2011   8
3  2012   58
end

tsset id year
tsfill, full
mvencode _all, mv(0)

2. As regards to your second question, "merge" different tables (data sets) should be your direction:

help merge

已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
txje + 2 + 2 + 2 热心帮助其他会员
evarei2 + 1 + 1 + 1 非常感谢
crystal8832 + 40 + 2 + 2 热心帮助其他会员

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

藤椅
evarei2 发表于 2014-7-2 16:55:54
没人会吗,这个不应该是面板数据处理中很容易碰到的问题吗,那我换个问法,我得到几个不同的几份表,其中几份如上图所示,有些企业在部分时间中缺失了所有变量的值。另外几份则是非常标准的表,所有的变量各年的数据都有显示,我应该如何用stata把两张表并起来,同时格式又不乱呢?希望各位给小弟解惑

板凳
SpencerMeng 在职认证  发表于 2014-7-10 16:01:07


很常见的问题

这两种方法都需要掌握

学习了

报纸
Dar.Growling 学生认证  发表于 2018-6-25 14:46:45
谢谢楼主提出的问题和大神给的回复,学习了!!!

地板
yshguo 发表于 2018-7-6 12:21:57
tsset id year
tsfill, full
mvencode _all, mv(0)

这三条语句不是帮你解决了吗?

7
赵安豆 发表于 2024-11-24 21:21:37
在Stata中处理面板数据并插入缺失年份的行,可以通过以下步骤完成:

1. 首先,确保你的数据是按`企业`和`时间`排序的。如果没有,请使用 `sort` 命令来对数据进行排序。

```stata
sort 企业 时间
```

2. 使用`tsset`命令声明面板数据结构。

```stata
tsset 企业 时间, yearly
```

3. 创建一个包含所有可能的企业和时间组合的数据集。这通常通过使用`expand`或生成虚拟变量来实现,但在这里我们先创建一个新的宽格式数据集,然后将其转换为长格式。首先列出所有可能的年份。

```stata
local years "2009 2010 2011 2012"
```

4. 然后生成一系列虚拟变量表示这些年份,并将原数据中的值填充到相应的年份中(对于缺失的数据,其对应的变量值会自动为`missing`)。

```stata
foreach y of local years {
    gen `y' = cond(时间 == `y', 变量1, .)
}
```

5. 使用`melt`命令将数据从宽格式转换成长格式。这会创建一个新变量作为时间标识,并移除之前生成的年份虚拟变量,留下新的长格式面板数据。

```stata
melt 2009-2012, idvars(企业) varnames(时间)
```

6. 最后,使用`replace`命令将所有缺失值替换为零。如果需要的话,可以对每个变量执行此操作。

```stata
replace 变量1 = 0 if 变量1 == .
replace 变量2 = 0 if 变量2 == .
```

这样你就可以得到一个完整的面板数据集,其中包含所有企业的每一年的数据(对于缺失的年份,数据值为零)。请注意,上述步骤可能会需要根据你的具体数据结构调整。

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



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

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