2017-05-09 2 views
0

이와 같은 일련의 항목을 채우려고합니다.이전 값을 기반으로 열을 채우는 R

   My result     ACTUAL   Expected  
FWK_SEQ_NBR a initial_d initial_c b c d  b c d 
914  9.161 131  62  0 62 69  0 62 69 
915  9.087 131  0   0 53 78  0 53 78 
916  8.772 131  0   0 44 140  0 44 87 
917  8.698 131  0   0 0 140  0 35 96 
918  7.985 131  0  69 52 139 69 96 35 
919  6.985 131  0  78 63 138 78 168 0 
920  7.077 131  0  140 126 138 87 247 0 
921  6.651 131  0  140 126 138 96 336 0 
922  6.707 131  0  139 125 138 35 364 0 

로직 여기

a  given 
b  lag of d by 4 
c  initial c for first week thereafter (c previous row + b current - a current) 
d  initial d - c current 

내가 내가 C의 권리를 받고 있지 않다

DS1 = DS %>% 
mutate(c = ifelse(FWK_SEQ_NBR == min(FWK_SEQ_NBR), intial_c, 0) ) %>% 
mutate(c = lag(c) + b - a)) %>% 
mutate(d = initial_d - c) %>% 
mutate(d = ifelse(d<0,0,d)) %>% 
mutate(b = shift(d, n=4, fill=0, type="lag")) 

를 사용하는 코드, 당신은 내가 놓치고 무엇을 알 수 있습니까. 또한 실제 출력과 예상 출력의 이미지를 첨부했습니다. 도와 줘서 고마워!

Actual and Expected values Image

두 번째 이미지 - 추가 된 제품과는 또한 예상과 실제 출력의 이미지를 복사 한 다음 실제 코드 열

Image - Product and Store as the first two columns- please help

목록에 저장합니다. 고맙습니다!

+1

당신이하려는 것을 이해하기가 어렵습니다. 해당되는 경우 'a', b','c', d'의 샘플 값을 제공하도록 편집 한 다음 출력물을 원하는대로 편집하십시오. – Drj

+0

은 이제 훨씬 더 의미가 있습니다. 감사합니다 – Drj

+0

당신이 나열한 문제 및 작동 순서가 맞습니까? 당신은'd'에서'b'를 파생시키고'b'는'd'에 의존하고'c'에서 다시'd'에 의존하는'b'와'a'에서'c'를 유도합니다. 재귀 계산 문제가 발생합니다. – Drj

답변

0

귀하의 예는 내가 재현 가능이라고 부르는 것이 아니며 코드 스 니펫은 귀하가하려는 일에 대해 많은 통찰력을 제공하지 못했습니다. 그러나 Excel의 화면 이미지는 매우 유용했습니다. 여기 내 해결책은

df <- as.data.frame(cbind(a = c(1:9), b = 0, c = 0, d = NA)) 
c_init = 62 
d_init = 131 
df$d <- d_init 
df$c[1] <- c_init # initial data frame is ready at this stage 

iter <- dim(df)[1] # for the loop to run item times 

for(i in 1:iter){ 
    if(i>4){ 
    df[i, "b"] = df[i-4,"d"] # Calculate b with the lag 
    } 
if(i>1){ 
    df[i, "c"] = df[i-1, "c"] + df[i, "b"] - df[i, "a"] # calc c 
    } 
    df[i, "d"] <- d_init - df[i, "c"] # calc d 
    if(df[i, "d"] < 0) { 
    df[i, "d"] <- 0 # reset negative d values 
    } 
} 
+0

이것은 제가 찾고 있던 것입니다. 고마워요 !!! – S5164456135

+0

한 가지 질문입니다.이 변수를 계산할 때 'FWK_SEQ_NBR'외에도 'Product'및 'Store'외에도 2 가지 추가 변수가 있다고 가정 해 봅시다. 어떻게 변경합니까? – S5164456135

+0

나는 완전히 이해하고 있는지 잘 모르겠다.하지만 재 계산이 필요한 행을 정의하는 다른 열도 있다면 어떻게 생각 하는가? 어떻게 생각 하나? 나는'df'를 두 개로 나누고 성능 향상을 위해 부분 집합에 집중할 것입니다. 일단 계산되면 다른 부분과 다시 병합됩니다. 그것은 단지 하나의 접근법입니다. 초기 및 예상 데이터 프레임의 예가 있으면 더 확신 할 수 있습니다. – Drj

관련 문제