楼主: 嫣雨汐
336 1

[面板数据求助] 根据当年数据如何生成其他年份的新变量 [推广有奖]

  • 0关注
  • 0粉丝

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
9.9356
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
11 小时
注册时间
2023-3-15
最后登录
2024-5-25

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助一下各位大神,我想以industry和auditor分类,当某一年的after0=1时,在下一年生成一个新变量after1=1,如果下一年没有数据则跳过。如G55党小安在2016年的after0=1,取G55党小安在2017年的after1=1;G55党小安在2017年的after0=1,但2018年没有数据,则跳过。
此外按照该逻辑,当某一年的after0=1时,在前两年生成一个新变量before2=1,前一年生成defore1=1,和后两年生成after2=1。 屏幕截图 2024-05-06 094732.png

二维码

扫码加我 拉你入群

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

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

关键词:新变量 Industry Auditor Before After

沙发
赵安豆 发表于 2024-5-6 10:09:44 |只看作者 |坛友微信交流群
您可以使用编程语言如R或Python来实现这个任务,这里以R为例,假设您的数据存储在一个数据框(df)中,并且有以下结构:

```r
df <- data.frame(industry = c("G55党小安", "G55党小安", "G55党小安"),
                 auditor = c("A1", "A2", "A3"),
                 year = c(2016, 2017, 2018),
                 after0 = c(1, 0, NA))
```

您可以使用`dplyr`库来处理数据:

```r
library(dplyr)

# 添加before1、after1、before2和after2变量
df <- df %>%
  arrange(industry, auditor, year) %>%
  group_by(industry, auditor) %>%
  mutate(before1 = ifelse(lag(after0, default = NA) == 1 & !is.na(lag(year)), 1, 0),
         after1 = ifelse(lead(after0, default = NA) == 1 & !is.na(lead(year)), 1, 0),
         before2 = ifelse(sum(lag(after0, n = c(2, 1), default = rep(NA, 3))) == 1, 1, 0),
         after2 = ifelse(sum(lead(after0, n = c(2, 1), default = rep(NA, 3))) == 1, 1, 0)) %>%
  ungroup()
```

这段代码首先按industry、auditor和year排序,然后按照每个组合进行分组。接着,它使用`lag()`和`lead()`函数检查前一年和后一年的`after0`变量,如果满足条件则设置新变量为1,否则为0。

注意:这个例子假设数据已经按照年份升序排列,并且在数据框中填充了NA值以表示没有对应的数据。如果您的数据不满足这些假设,可能需要进行一些预处理。

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



使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-26 17:12