2017-02-27 1 views
1

데이터 프레임의 한 행에있는 관측치를 기반으로 새로운 값 벡터를 계산하려고합니다. 첫 번째 값부터 시작하여 두 번째 값을 곱한 다음 세 번째 값에 방금 계산 한 값을 곱합니다. 나는 그것을 계산할 때까지 존재하지 않는 값을 참조하는 방법을 모르겠습니다.R의 행 값을 반복적으로 곱하십시오.

이것은 내가 긴 형식을이을 쓰고 있다면 내가 할 것 인 것이다 :

index1 <- rnorm(12) 
index2 <- rnorm(12) 
index3 <- rnorm(12) 
index4 <- rnorm(12) 
index5 <- rnorm(12) 
data <- rbind(index1, index2, index3, index4, index5) 

splice1=data[2,1] 
splice2=splice1*data[2,2] 
splice3=splice2*data[2,3] 
splice4=splice3*data[2,4] 
splice5=splice4*data[2,5] 

splices <- c(splice1, splice2, splice3, splice4, splice5) 

나는 데이터의 25 행에 대해이 작업을 수행해야합니다.

이 게시물을 찾았습니다. Multiply previous row value by constant R 그러나 데이터 세트에서 인덱싱하여 참조 할 때이 작업을 수행하는 방법을 알 수 없습니다.

쉽게 할 수있는 방법이 있어야하지만 어디서부터 시작해야할지 모르겠습니다.

도움을 주셔서 감사합니다.

답변

3

?apply 데이터의 각 행을 통해 ?cumprod 함수 여기

t(apply(data, 1, cumprod)) 

#    [,1]  [,2]  [,3]  [,4]   [,5] 
#index1 0.37891415 1.02182094 0.62823228 0.03616281 -0.0262988311 
#index2 -0.06586518 -0.03332061 -0.02814185 0.01755643 -0.0238307051 
#index3 -0.09113830 0.13385726 -0.11245386 0.10917885 -0.1466176651 
#index4 -0.53727635 0.71947970 0.87007225 0.19779160 -0.2119473091 
#index5 -0.83982393 -0.08571211 -0.08986865 0.02597184 -0.0006549512 

행 2 익숙 :

splices 
#  index2  index2  index2  index2  index2 
#-0.06586518 -0.03332061 -0.02814185 0.01755643 -0.02383071 

cumprod()는 본질적으로 각각의 숫자를 설정할 공급 된 함께 승산이다하는 cum ulative prod 개관 :

cumprod(1:5) 
#[1] 1 2 6 24 120 
속도가 문제가

경우 matrixStats 패키지에 볼 수 있습니다 이것에 대한

library(matrixStats) 
rowCumprods(data) 
+0

정말 감사합니다. 매우 감사. – Laura

관련 문제