love27 发表于 2020-8-10 18:51 
试过了,是想要的结果,谢谢您!不过第二三行代码的意思吗,没太看懂。。。
因为不知道你的数据的顺序有什么要求,就先设置了辅助排序变量,方便运行之后,回到最初的数据排序。(代码1、4、5)
第2行:将firm、year变量sort,以firm为分组,当year==2018年时候进行判断stuff值的变化。第一个等号就赋值,等号后面的stuff[_n]!= stuff[_n-1] 是一个判断表达式,在if条件范围内,正确赋值1,不正确赋值0。实际判断两类stuff值:一类是2018年的第一个和2017年的最后一个(这个是判断前后是否一致的关键点)、一类是2018年内第2个以后的数据与其前一个(这一部分的都为0,因为2018年的都一样)。
第3行:因为第2行代码在第二类判断时,2018年内判断,第2个以后的赋是0,实际应该以2018年第1个的值为准,因而将firm、year变量sort,以firm、year为分组,当year==2018进行相应替换。
bysort 后面的变量,加上( )的只是排序不以此为分组统计计算。