R下用for()函数求增长率

浏览: 2168

你没有看错,确实是求增长率。用Excel可以很简单的使用=(A1-A2)/A1*100再加鼠标拖动就可以实现的功能,在R下确实让我头痛了一个晚上,在网上找了一个没有找到理想的结果,刚好在群友的文章中学到了for()函数,然后就有了下面的代码:

 library(openxlsx)
path<-"D:/日常工作数据.xlsx"
excelDate<-read.xlsx(path,"Sheet1")
YEAR<-c(2004:2013)
POBrate<-c(1:10)
for(i in 2:11)(POBrate[i-1]<-(excelDate$POB[i]/excelDate$POB[i-1]-1)*100)
AYWrate<-c(1:10)
for(i in 2:11)(AYWrate[i-1]<-(excelDate$AYW[i]/excelDate$AYW[i-1]-1)*100)
NSEBPSrate<-c(1:10)
for(i in 2:11)(NSEBPSrate[i-1]<-(excelDate$NSEBPS[i]/excelDate$NSEBPS[i-1]-1)*100)
HBrate<-c(1:10)
for(i in 2:11)(HBrate[i-1]<-(excelDate$HB[i]/excelDate$HB[i-1]-1)*100)
YRPrate<-c(1:10)
for(i in 2:11)(YRPrate[i-1]<-(excelDate$YRP[i]/excelDate$YRP[i-1]-1)*100)
BRrate<-c(1:10)
for(i in 2:11)(BRrate[i-1]<-(excelDate$BR[i]/excelDate$BR[i-1]-1)*100)
excelRate<-data.frame(YEAR,POBrate,AYWrate,NSEBPSrate,HBrate,YRPrate,BRrate)
excelRate

结果就是:

YEAR POBrate AYWrate NSEBPSrate HBrate YRPrate BRrate

1 2004 23.5393469 4.302375 9.4679319 12.524788 2.8948822 20.063646

2 2005 23.5860044 1.716362 4.8884562 9.805442 3.3653846 19.562274

3 2006 8.1943705 8.101367 -5.8405909 3.954548 5.2370885 2.810114

4 2007 30.1094407 10.513573 2.8806930 3.538566 4.7376880 24.224091

5 2008 6.9969148 12.000619 0.4270891 9.954670 4.5935311 2.297832

6 2009 0.9139873 7.522898 4.7104796 7.794955 4.2681393 -3.216852

7 2010 8.7444067 7.989641 14.4059089 6.511675 4.2401584 4.321030

要注意的地方--难道R是不可以随用随定义变量的嘛?还是for()函数下面不可以?各位注意一下哦!

image.png

推荐 2
本文由 kaolixin 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

谢谢楼主分享。在R中尽量避免for函数,在R中向量化才是王道;在R中确实是可以随用随定义向量(变量),但是您这是定义向量中的某个元素,这是不行的。
谢谢指导。

要回复文章请先登录注册