如何在特定值上回溯具有相同日期的所有行?
问题描述:
我使用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年。所有债券的所有日期
> plot(dtm, ytm, xlab = "Days to maturity", ylab = "Yield to maturity")
> abline(lm (ytm~dtm), col="red")
我绘制在所有日期的所有债券,一个回归
情节。我需要在x = 1300时获得y轴的值。不过,我需要分别为每个日期提供这些信息。
答
你可以用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
答
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是结果
谢谢您的快速答复。但是我得到的错误消息: 的newval abn5y %GROUP_BY(日期)%>% +总结(Y5 =预测(lm(YTM〜DTM),newval)) 错误:找不到函数“%>%” – rbonac
听起来好像你还没有加载'dplyr' –
我尝试加载它如下: > 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