2013-12-22 2 views
1

% 변경을 다른 기준으로 사용하여이 변수를 다시 작성하려고합니다. 내가 base를 5에서 시작하도록하고, colunmn 2의 퍼센트 변화를 사용하여 루프를 사용하지 않고 변수를 빌드하는 방법이 있습니까?다른 기본 (R)에서 변수 재구성

나는 작은 성공을 R 아래이 코드를 사용하고 있습니다 : 당신이 의미하는 결과 생산

data$intial=lag(data$intial,-1)*(data$pctchng) 
     Error: is.numeric(x) is not TRUE 

    ratio  pctchng initial 
1.005028571 NA   5 
1.006367978 0.133270514 NA 
1.00566508 -0.069845001 NA 
1.010365029 0.467347325 NA 
1.013941983 0.354025918 NA 
1.007602862 -0.625195643 NA 
1.004898686 -0.268377165 NA 
1.005610413 0.070825714 NA 
1.00494049 -0.066618579 NA 
1.007815989 0.286136319 NA 
+1

우리는 더 많은 정보가 필요하다고 생각합니다. 결과를 어떻게 보이게할까요? 또한 명령에 오타가 있습니다 (초기! = intial). – vaettchen

+0

긍정적 인 지연을 원했던 것 같습니다. '이전'이라는 뜻입니다. 이것은 "initial"의 첫 번째 값을 덮어 쓰므로 자체 참조 래그가 실제로이를 수행하는 올바른 방법이 아니라는 점을 분명히합니다. – igelkott

답변

1

않습니다

data$idx <- data$ratio/data$ratio[ 1 ] 
data$initial <- data$idx * 5 

data 
     ratio  pctchng initial  idx 
1 1.005029   NA 5.000000 1.0000000 
2 1.006368 0.13327051 5.006664 1.0013327 
3 1.005665 -0.06984500 5.003167 1.0006333 
4 1.010365 0.46734732 5.026549 1.0053098 
5 1.013942 0.35402592 5.044344 1.0088688 
6 1.007603 -0.62519564 5.012807 1.0025614 
7 1.004899 -0.26837716 4.999354 0.9998708 
8 1.005610 0.07082571 5.002895 1.0005789 
9 1.004940 -0.06661858 4.999562 0.9999124 
10 1.007816 0.28613632 5.013867 1.0027735 
2
> cumprod(c(5, tail(data$pctchng, -1) + 1)) 

## [1] 5.000000 5.666353 5.270586 7.733781 10.471739 3.924854 2.871512 
## [8] 3.074889 2.870045 3.691269 

또는

> cumprod(c(5, tail(data$pctchng, -1)/100 + 1)) 
## [1] 5.000000 5.006664 5.003167 5.026549 5.044344 5.012807 4.999354 5.002895 
## [9] 4.999562 5.013867 

을하는 vaettchen과 같은 대답을 준다. 당신이 pctchng 정의하는 방법에 따라 달라집니다