2017-09-21 73 views
0

我使用R.新我有以下样本数据集:如何在特定值上回溯具有相同日期的所有行?

> head(abn) 
     Dates DTM YTM 
1 2010-09-28 1133 2.965 
2 2010-09-28 1834 3.613 
3 2010-09-29 1132 2.994 
4 2010-09-29 1833 3.595 
5 2010-09-30 1131 3.026 
6 2010-09-30 1832 3.590 

的观察是从2010年至2016年的观察期几个键的值。我的数据集由多个债券组成,期限为1至15年(数据集中描述为260-3900个工作日)。 DTM代表到期日,YTM代表到期收益率。

我的目标是构建一个每天5年到期的合成债券。因此,我需要进行回归并找到DTM值为1300的YTM值,这正好是5年。所有债券的所有日期 enter image description here

> plot(dtm, ytm, xlab = "Days to maturity", ylab = "Yield to maturity") 
> abline(lm (ytm~dtm), col="red") 

我绘制在所有日期的所有债券,一个回归

情节。我需要在x = 1300时获得y轴的值。不过,我需要分别为每个日期提供这些信息。

回答

0

你可以用dplyr做到这一点...

library(dplyr) 
newval <- data.frame(DTM=1300) #predict.lm likes new values in a dataframe 
abn5y <- abn %>% group_by(Dates) %>% 
       summarise(Y5=predict(lm(YTM ~ DTM), newval)) 

abn5y 
     Dates  Y5 
     <chr> <dbl> 
1 2010-09-28 3.119374 
2 2010-09-29 3.138034 
3 2010-09-30 3.161971 
+0

谢谢您的快速答复。但是我得到的错误消息: 的newval < - data.frame(DTM = 1300)#predict.lm喜欢在一个数据帧 新值> abn5y <- abn %>%GROUP_BY(日期)%>% +总结(Y5 =预测(lm(YTM〜DTM),newval)) 错误:找不到函数“%>%” – rbonac

+0

听起来好像你还没有加载'dplyr' –

+0

我尝试加载它如下: > library(dplyr) loadNamespace(i,c(lib.loc,.libPaths()),versionCheck = vI [[i]]中的错误): es gibt kein Paket namens'DBI' 此外:警告消息: Paket'dplyr' wurde unter R版本3.2.5 erstellt 错误:拉登冯PAKET奥德Namensraum献给“dplyr” fehlgeschlagen 然后我用这样的:这一次合作,下载 > install.packages(“dplyr”) ,但却代码不会不幸工作。 – rbonac

0
library(plyr) 
abn<-read.csv("abn.csv",stringsAsFactors = F) 
dfs<-dlply(abn,.(Dates)) 

dailyYTM<-c() 

for (i in unique(abn$Dates)){ 
    df<-dfs[[grep(i,names(dfs))]] 
    model<-lm(df$YTM~df$DTM) 
    dailyYTM[i]<-model$coefficients[1]+model$coefficients[2]*1300 
} 

不是最有效的,但我认为会做trick.dailyYTM是结果

相关问题