全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
808 1
2024-05-06
求助一下各位大神,我想以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

二维码

扫码加我 拉你入群

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

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

全部回复
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学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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