지난 3 기간을 사용하여 이동 평균 계산나는 세 개의 컬럼을 가진 데이터 세트를 가지고있다; 고객, 시간 및 수량. TimePeriod는 yyyymm 형식입니다. 나는 모든 고객에 대해 지난 3 기간 동안 "롤링 평균"을 계산하는 수식을 결정하려고합니다.
예를 들어 201704라는 레이블이 붙은 행에 201703, 201702 및 201701의 모든 레코드에 대한 평균 수량을 반환하는 수식이 필요합니다. TimePeriod는 데이터 (고객 별)에서 여러 번 발생할 수 있으므로 약간 복잡합니다.
어떤 제안?
다시 : 지난 3 기간을 사용하여 이동 평균 계산모든 도움을 주셔서 다시 한 번 감사드립니다!
그게 정확히 내가 찾고 있었던거야.
-매트
다시 : 지난 3 기간을 사용하여 이동 평균 계산다음은 고객이 추가 된 수식의 확장입니다.
dt = Current Data Table();
tp = :timeperiod;
cus = :Customer;
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-1
);
lagtp1 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-2
);
lagtp2 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
Mean(
:Quantity[dt << get rows where( ( :timeperiod == tp | :timeperiod == lagtp1 | :timeperiod == lagtp2 ) &
:Customer == cus)
]
);
다시 : 지난 3 기간을 사용하여 이동 평균 계산너는 옳았다! 그것은 내 최종 사용자 오류가 있어야합니다 
고객별로 수단을 구분하고 싶다면 '고객'이 참조 할 자체 열에 있다고 가정 해 봅시다.
그러면 출력 열은 해당 행의 고객에 대한 마지막 세 시간대의 평균 만 계산합니다.
다시 : 지난 3 기간을 사용하여 이동 평균 계산내가 준 공식은 주어진 행에 대한 년 / 월 값을 살펴 봅니다. 그런 다음 1 개월 전의 값이 무엇인지 발견하고 2 개월 전의 값을 찾습니다. 그런 다음 데이터 테이블에서 3 개의 계산 된 연도 / 월 값에 대한 연도 / 월 값을 갖는 모든 행의 평균을 찾습니다.
따라서 년 / 월 값을 갖는 모든 행을 가정 해 봅시다. 201705는 201705, 201704 또는 201703의 값을 갖는 것으로 밝혀진 데이터 테이블의 모든 행의 평균 quanity를 찾습니다. 내 제한된 테스트 케이스가 이것을 위해 일했습니다. 데이터 테이블의 행의 실제 순서는 중요하지 않습니다. 수식은 주어진 행에 대한 3 개의 기간과 일치하는 전체 데이터 테이블의 모든 행을 찾습니다.
샘플 데이터 테이블을 제공해 주시면 자세히 살펴볼 수 있습니다. 아니면, 당신이 묻는 것에 대한 나의 해석이 정확하지 않을 수도 있습니다.
다시 : 지난 3 기간을 사용하여 이동 평균 계산Jim - 양해 해 주셔서 감사합니다.
그 수식을 새 열에 추가했는데, 전체 열에 동일한 반복 값이 나타납니다.
마지막 3 시간 동안의 평균을 알려주는 수식을 원합니다. 그 줄의 .
예를 들어, 201704의 평균 레코드는 2017 년 4 월 (201704, 201703, 201702)의 마지막 3 시간 기간 만 평균화해야합니다. 201705의 다음 행은 2017 년 5 월 (201705, 201704, 201703)의 마지막 3 기간으로 구성된 다른 평균을 가져야합니다.
생각?
다시 : 지난 3 기간을 사용하여 이동 평균 계산제가 여러분에게 준 것은 새로운 열에 사용될 새로운 수식으로, 각 행에 대해 새로운 값을 만듭니다.
데이터 표에서 풀다운 메뉴로 이동하십시오.
열 ==> 새로운 열
원하는 이름으로 열 이름 지정
왼쪽 하단에있는을 클릭하십시오.
열 속성
수식 선택
"수식 없음"이라고 표시된 파란색 상자를 두 번 클릭하십시오.
열리는 창에서 수식을 붙여 넣습니다.
다시 : 지난 3 기간을 사용하여 이동 평균 계산답장 해주셔서 매우 감사합니다.
스크립팅을 처음 접했습니다. 평균이 행별로 새로운 열에 출력되는 방법이 있습니까? 스크립트가 지난 3 시간 동안 평균을 결정할 때 새로운 열의 각 행에 대해 평균을 표시합니다.
또한 데이터 세트의 시작 부분에 해당 스크립트에 문제가 있습니까? 처음 날짜에 lagtp1 또는 lagtp2가 없을 때?
다시 : 지난 3 기간을 사용하여 이동 평균 계산당신의 공식입니다.
dt = Current Data Table();
tp = :timeperiod;
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-1
);
lagtp1 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-2
);
lagtp2 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
Mean(
:Quantity[dt << get rows where( :timeperiod == tp | :timeperiod == lagtp1 | :timeperiod == lagtp2 )
]
);