楼主: MrOyang
1430 12

[数据管理求助] 怎么用循环语句完成以下命令? [推广有奖]

  • 17关注
  • 7粉丝

已卖:590份资源

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
1599 个
通用积分
22.6361
学术水平
5 点
热心指数
8 点
信用等级
6 点
经验
1449 点
帖子
76
精华
0
在线时间
487 小时
注册时间
2014-8-14
最后登录
2024-4-26

楼主
MrOyang 发表于 2021-2-23 17:52:44 |AI写论文
200论坛币
想要计算指标pop间隔5年的增长率,并生成新的指标。
手动输入的话,命令如下图。

总觉得可以用循环语句简化计算,但是自己做不出来,求助大神~~
示例数据如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input double(pop2003 pop2004 pop2005 pop2006 pop2007 pop2008 pop2009 pop2010)
  4. 1142.5407816350082 1155.8367963732528 1515.3375583135287 1559.4943230229655 1606.9892103635489  1664.000698091355 1725.0085164367229 1858.4464664287689
  5. 922.5463591135233  929.2868462757529 1033.3398541206718  1059.009304472463 1095.0000006938064 1145.4905990301588 1202.0727458688912 1263.7285256322436
  6. 907.2293916249671  914.0506966593923  956.9921268277006   965.047619047619  973.7751103411293  981.3539397711164  986.3545747337979 1002.8070175438597
  7. 704.4651112198835  708.1645983017636  723.9877169178033  728.3912547411267   735.977492387131  741.0808673575561  744.9772758357919  752.5231945309738
  8. 271.84602416409103 274.53829851650016  286.0637120726807  279.6150924284629 293.00394342048867  294.3670172118919 296.76949465142013 298.40933872105705
  9. 853.5930154466084  860.2002388169376  863.0126771066368  869.1343817926096  873.6989568618928  878.7073418392123  884.7096009482418  903.3240255517728
  10. 665.6318716854223  669.6870719629122  678.0201175181754  681.9279186066562  686.3528278625366  690.8836884387007  696.1192170818506   705.154459247193
  11. 1073.6011144648246 1082.6430172497808 1069.9600798403194 1076.6194150367844 1082.5630953318114  1088.917206226753   1097.02111604312 1111.2134843639913
  12. 450.4364967614756  450.1068736640793  418.0154820548909 418.13471502590676  418.8751479289941 420.43305707949105 422.38795651256066  429.1957187902473
  13. 358.5049580472922  359.9137931034483  336.0067145388417  337.3266078184111  337.9987787751115 339.67122767008743 342.42436255518516  345.9257529768854
  14. end
复制代码








2.png (19.43 KB)

2.png

1.png (17.85 KB)

1.png

最佳答案

songking 查看完整内容

forvalues year=2003/2018{ cap gen poprt`year'`=`year'+5'=(ln(pop`=`year'+5')-ln(pop`year'))*100 } rename poprt20*20* poprt**
关键词:循环语句 generated generate install example

回帖推荐

蓝色 发表于10楼  查看完整内容

也可以这样改

zdlspace 发表于3楼  查看完整内容

已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
逐梦的太阳 + 50 + 3 + 5 + 5 鼓励积极发帖讨论
xujingtang + 80 精彩帖子

总评分: 经验 + 130  学术水平 + 3  热心指数 + 5  信用等级 + 5   查看全部评分

沙发
songking 发表于 2021-2-23 17:52:45
MrOyang 发表于 2021-2-24 09:15
使用循环缺失可以做到。
但是计算出pop增长率之后,还要与另一个变量的同期增长率进行回归,回归次数比较 ...
forvalues year=2003/2018{
cap gen poprt`year'`=`year'+5'=(ln(pop`=`year'+5')-ln(pop`year'))*100
}
rename poprt20*20* poprt**

藤椅
MrOyang 发表于 2021-2-23 20:03:24
顶顶~~

板凳
zdlspace 学生认证  发表于 2021-2-23 21:17:15
  1. reshape long pop,i(id) j(year)
  2. xtset id year
  3. bys id:gen poprt1=(pop-L5.pop)/L5.pop
复制代码

报纸
MrOyang 发表于 2021-2-23 21:30:32
zdlspace 发表于 2021-2-23 21:17
谢谢~~
这个方法能达到目标。
不过循环语句能不能做到呢?
因为计算出增长率之后,还要对同期的人口增长率与另一个变量增长率做回归,次数会比较多。循环语句应该怎么写?
感谢感谢!!

地板
zdlspace 学生认证  发表于 2021-2-23 22:18:35
论坛币呢?

7
MrOyang 发表于 2021-2-24 09:15:04
zdlspace 发表于 2021-2-23 21:17
使用循环缺失可以做到。
但是计算出pop增长率之后,还要与另一个变量的同期增长率进行回归,回归次数比较多。所以还是想知道,用循环语句怎么写?
感谢感谢~~

8
MrOyang 发表于 2021-2-24 11:18:41
songking 发表于 2021-2-23 17:52
forvalues year=2003/2018{
cap gen poprt`year'`=`year'+5'=(ln(pop`=`year'+5')-ln(pop`year'))*100
...
感谢,已经设置为最佳答案了!
还要麻烦问一下
gen poprt`year'`=`year'+5'=(ln(pop`=`year'+5')-ln(pop`year'))*100
这行命令里,poprt`year'`=`year'+5'中间的等号起的什么作用?为什么可以把两个字符连接起来呢?

9
songking 发表于 2021-2-24 12:43:44
MrOyang 发表于 2021-2-24 11:18
感谢,已经设置为最佳答案了!
还要麻烦问一下
gen poprt`year'`=`year'+5'=(ln(pop`=`year'+5')-ln(po ...
表示当前年份+5年,不同的宏是可以直接连接的
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
MrOyang + 5 + 1 + 1 + 1 精彩帖子

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

10
蓝色 发表于 2021-2-24 13:17:07
也可以这样改

  1. forvalues i=2003/2018{
  2.       local j=`i'+4
  3.           
  4.       gen poprt`i'`j'=(ln(pop`j')-ln(pop`i'))*100
  5. }
  6. rename poprt20*20* poprt**
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
MrOyang + 5 + 1 + 1 + 1 精彩帖子

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

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

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