각 날짜에 대한 마지막 3개 관찰의 평균을 계산하고 해당 값을 자체 열에 두고 아래와 같이 마지막 날짜와 쌍을 이루고 싶은 데이터 세트가 있습니다.
Names Default To Here( 1 );
// Create an example data table
dt = New Table( "Date",
Add Rows( 30 ),
New Column( "Date",
Numeric,
"Continuous",
Format( "m/d/y", 10 ),
Set Values( [3713817600, 3713817600, 3713817600, 3713817600, 3713817600, 3713817600, 3713817600, 3713817600, 3713817600, 3713817600,
3715027200, 3715027200, 3715027200, 3715027200, 3715027200, 3715027200, 3715027200, 3715027200, 3715027200, 3715027200,
3716236800, 3716236800, 3716236800, 3716236800, 3716236800, 3716236800, 3716236800, 3716236800, 3716236800, 3716236800] )
),
New Column( "Data",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2,4,6,8,10,12,14,16,18,20,2,4,6,8,10,12,14,26,28,30,2,4,6,8,10,12,14,36,38,40] )
),
New Column( "Desired Result",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [.,.,.,.,.,.,.,.,.,18,.,.,.,.,.,.,.,.,.,28,.,.,.,.,.,.,.,.,.,38] )
),
);
평균을 계산하는 요약 테이블을 만든 다음 원래 데이터 테이블에 다시 평균을 삽입할 수 있지만, 보다 우아하고 프로세스 집약적이지 않은 방법에 대한 제안을 찾고 있습니다.이를 수행하는 방법에 대한 제안은 열 수식이나 JSL(선호)을 통해 감사하겠습니다.
Col 함수는 상당히 강력할 수 있으므로 솔루션을 조금 열 수도 있습니다. 시간이 나면 설명을 살펴보세요.
- Col Max(Row(), :Date)를 사용하여 각 날짜의 마지막 행을 가져옵니다.
- 날짜의 마지막 행에 대해 Row()를 사용하여 if 문을 확인하세요.
- 평균을 사용하여 날짜의 마지막 세 행의 평균을 계산합니다. Index(Row() - 2, Col Max(Row(), :Date)는 행 번호의 행렬을 생성합니다. 그런 다음:Data[Index]를 사용하여 해당 행 번호에 대한 값을 얻을 수 있습니다.
수식이 여러 부분으로 분할된 데이터 테이블을 첨부했습니다.

수식을 사용한 다른 옵션:
If(Row() == Col Max(Row(), :Date),
Mean(:Data[Index(Row() - 2, Col Max(Row(), :Date))])
)
이를 수행하는 공식을 작성하는 한 가지 방법은 다음과 같습니다.
If( :Date != :Date[Row() + 1] | Row() == N Rows( Current Data Table() ),
Mean( :Data[Row()], :Data[Row() - 1], :Data[Row() - 2] )
)