12977 13

[数据管理求助] stata中分组后,按年份顺次累加的变量累积值的代码,求助!! [推广有奖]

  • 2关注
  • 5粉丝

已卖:294份资源

讲师

37%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
17.6240
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
6155 点
帖子
207
精华
0
在线时间
752 小时
注册时间
2019-3-25
最后登录
2025-8-29

楼主
海阔天空锦鲤 学生认证  发表于 2020-6-24 10:05:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助!!

  我想计算:按分组id、按年份year,依次累加的专利变量的有效累积值,并且考虑折旧率15%, 公式是:本年的专利有效累积值=(1-15%)*上一年的专利有效累积值+本年的专利量
  比如:
   id     year          专利量         专利有效累积值
   1      2001            5                   5
   1      2003            7                  10.6125            (ps:0.85*0.85*5+7=10.6125)
   1      2004            10                 19.0207            (ps:0.85*10.6125+10=19.0207)
----------------------------------------------------------------------------------------------
   2      1997            1                   1
   2      1998            9                   9.85
-----------------------------------------------------------------------------------------------
   3      2004            10                 10
   3      2006            10                 17.225             (ps:0.85*0.85*10+10=17.225)
   3      2007            10                 24.6413           (ps:0.85*17.225+10=24.6413)


这个在stata中用什么命令可以实现,感谢!!感谢!!

二维码

扫码加我 拉你入群

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

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

关键词:Stata tata year ear 折旧率

沙发
海阔天空锦鲤 学生认证  发表于 2020-6-24 12:13:06
解决了,自问自答一下:
gen year1=1  // 年份赋值为1
bysort id  (year): gen year_lj = sum(year1)  // 累加年份
gen patent_yxlj=.   // 建专利有效累积变量
bysort id: replace patent_yxlj=patent[1] if (year_lj==1)  // 初始专利量
bysort id: replace patent_yxlj=(0.85^(year-year[_n-1]))*patent_yxlj[_n-1]+patent if(patent_yxlj==.)  //计算公式
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
792952241# + 1 + 1 + 1 精彩帖子
AmoxicillinIII + 5 精彩帖子

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

藤椅
DΘstinyじò 发表于 2020-6-24 12:16:09 来自手机
海阔天空锦鲤 发表于 2020-6-24 10:05
求助!!

  我想计算:按分组id、按年份year,依次累加的专利变量的有效累积值,并且考虑折旧率15%,  公 ...
每一个ID第二期和第三期的计算公式不一样?

板凳
DΘstinyじò 发表于 2020-6-24 12:27:40
DΘstinyじò 发表于 2020-6-24 12:16
每一个ID第二期和第三期的计算公式不一样?
明白了,还是和年份有关系,间隔两年的要进行两次折旧。

报纸
DΘstinyじò 发表于 2020-6-24 12:40:17
///你建立year1、patent_yxlj是先赋值“.”再计算replace,可以反过来,先计算后再replace“.”,可以不用建立这两个变量
bys id (year): gen patent_yxlj=0.85^(year-year[_n-1])*zl[_n-1]+patent
replace patent_yxlj=patent if patent_yxlj==.

地板
海阔天空锦鲤 学生认证  发表于 2020-6-26 18:49:21
DΘstinyじò 发表于 2020-6-24 12:27
明白了,还是和年份有关系,间隔两年的要进行两次折旧。
是的呢,非平衡面板,有的年份是不存在的

7
海阔天空锦鲤 学生认证  发表于 2020-6-26 18:50:15
DΘstinyじò 发表于 2020-6-24 12:40
///你建立year1、patent_yxlj是先赋值“.”再计算replace,可以反过来,先计算后再replace“.”,可以不用建 ...
结果一样,方法都行哈

8
橙子橘子1999 发表于 2021-6-21 19:00:56
[_n]时表示变量中第n大的数据还是第n个数呀

9
海阔天空锦鲤 学生认证  发表于 2021-7-13 18:43:04
橙子橘子1999 发表于 2021-6-21 19:00
[_n]时表示变量中第n大的数据还是第n个数呀
感觉stata命令都是试出来的,多试试,[_n]应该是第n个

10
fgkjvbk 学生认证  发表于 2023-4-3 14:36:18
海阔天空锦鲤 发表于 2020-6-24 12:13
解决了,自问自答一下:
gen year1=1  // 年份赋值为1
bysort id  (year): gen year_lj = sum(year1)  / ...
您好,想问下我用了您的命令,最后一句报错,显示“unknown function patentif()" 请问这种情况怎么办呀?

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

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