热线电话:13121318867

登录
首页精彩阅读生成滞后数据,滞后阶数自己设定-R语言
生成滞后数据,滞后阶数自己设定-R语言
2017-02-22
收藏

生成滞后数据,滞后阶数自己设定-R语言

rm(list = ls()) 
#首先读取数据 
data1<-read.csv("原始数据.csv",header=T,stringsAsFactors=F)#读入数据 


#如果是xlsx格式数据可以调用xlsx包,读取方法如下

#library(xlsxjars)
#library(rJava)
#library(xlsx)
#data1<-read.xlsx("原始数据.xlsx",header=T,sheetIndex=1)#读入数据

n1=4 #滞后期数,自己定义
col_name<-colnames(data1)[-1] #因为第一列是日期,所以删除第一列


#假如要生成滞后4期数据,我的做法是将每阶滞后数据按列依次排列,如:原数据是gdp,则得到的数据为gdp,gdp(-1),...,gdp(-4) 
if(n1>(nrow(data1)-1)) print("请输入正确的滞后期数") else{ #首先肯定是判断滞后阶数是否合理 
  data5<-c() 
  for(i in 1:n1){ 
    data3<-data1[-c(1:i),]  
    data4<-data1[-c((nrow(data1)-i+1):nrow(data1)),] #滞后i期数据 
    data4<-data4[,-1] #第一列是日期数据,只需要data3有日期就行了(即整个数据只要第一列是日期就行了) 
    colnames(data4)<-paste(col_name,"(-",i,")") #给滞后变量命名 
    if(i==1){ 
      for(j in 1:ncol(data1)) 
        data5<-cbind(data5,data3[,j],data4[,j])  
    } 
    if(i>1){ 
      data5<-data5[-1,] 
      for(j in 1:ncol(data1)) data5<-cbind(data5,data4[,j]) 
    } 
  } 

#之所以写此博客是因为当时想了好久才想出来怎么按顺序依次排列,希望能帮助那些需要求滞后数据的同学,毕竟lag是真心不好用,有时候R中的函数不一定都很适用,还不如自己写一个,很锻炼思维的。数据分析师培训

#该程序可以对数据框(矩阵当然也行)每列数据批量求滞后项,个人觉得很适用,应该对初学时间序列的同学有帮助,有好想法也欢迎贴上来,大家一起学习一起进步!


数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询