월별 주식 수익률의 dataframe 있습니다계산 3 월 복귀
d<-data.frame(replicate(5,sample(rnorm(1),6,rep=TRUE)))
가 지금은 N에 대한 (다음과 같은 방법으로 예를 N 개월 수익률 이러한 수익을 변환하고 싶습니다를 = 3) :
d[1,1]=(1+d[1,1])*(1+d[2,1])*(1+d[3,1])
d[2,1]=(1+d[2,1])*(1+d[3,1])*(1+d[4,1])
d[3,1]=(1+d[3,1])*(1+d[4,1])*(1+d[5,1])
그리고 그 다음 열의 같은
:d[1,2]=(1+d[1,2])*(1+d[2,2])*(1+d[3,2])
d[2,2]=(1+d[2,2])*(1+d[3,2])*(1+d[4,2])
d[3,2]=(1+d[3,2])*(1+d[4,2])*(1+d[5,2])
나는 당신이 아이디어를 얻을 생각합니다. 재미는 다음과 같이 정의된다
apply(d, 2, fun)
는 :
fun<-function(df_column)
{
# Loop over df_column rows
for (row in 1:nrow(df_column)) {
d[row]=(1+d[row])*(1+d[row+1])*(1+d[row+2])
}
}
의미가이 방법 지나요 또는 더 우아한 방법이 다음과 같이
지금, 나는 계속 생각했던 방법은?
"zoo"에서 사용 된 기능을 보지 못했습니다. 나는 그것이 얼마나 쉬운지를 좋아합니다. 호기심에서 나는'map' 해결책보다 훨씬 느리다는 것을 알았고 그것이 왜 그런지 궁금했다. –
이것은 동물원 객체를 대상으로하며 객체를 동물원으로 내부적으로 변환 한 다음 다시 변환하여 R로 작성합니다. 또한 매우 일반적입니다. 당신은'exp (rollsum (log (1 + d), 3, align = "left", fill = NA))'를 시도 할 수있다. 또한 C++로 작성된 롤링 함수가있는 RcppRoll 패키지도 있습니다. –
우수, 팁 주셔서 감사합니다! –