시차 24행의 합계를 계산하는 열을 만들려고 합니다. 이 경우 시간당 총 강수량이 포함된 "Precip" 열이 있습니다. 각 값이 기록된 위치를 나타내는 두 번째 열 "침전 스테이션"이 있습니다. "DateTime"과 "Precipitation Station"을 기준으로 열을 정렬했습니다. Precip 열의 이전 24개 값을 합산하여 이전 24시간 동안 비가 얼마나 내렸는지 알려주는 새 열을 만드는 효율적인 방법을 찾고 있습니다. 이 24시간 총계는 관측소에 따라 다르기 때문에 시차 24 강수량이 일치하지 않으면 시차 24 값을 계산할 수 없습니다.
나는 이것을 스스로 알아 냈습니다. 간단한 합산 기능입니다. 다른 사람이 이와 같은 작업을 수행해야 하는 경우를 대비하여 게시할 것이라고 생각했습니다.
If( :Precipitation Station == Lag( :Precipitation Station, 1 ),
Summation( i = 1, 24, Lag( :Precipitation, i ) ),
:Precipitation
);
실제로 주어진 스테이션/날짜에 대한 총 강수량을 계산하려는 것이 아니라 스테이션/이전 24시간 기간을 계산하려는 것입니다. 예를 들어 주어진 날짜 시간이 2020년 1월 3일 오전 9시인 경우 precip 열에서 이전 24개 값을 가져와 합산하려고 합니다. 따라서 2020년 1월 3일 오전 08:00:00부터 시작하여 2020년 1월 2일 오전 09:00:00까지 거슬러 올라갑니다. 본질적으로 움직이는 24시간의 시간 창입니다. 따라서 이 열은 내 데이터 테이블의 각 행에 대해 이전 24시간 동안의 이전 비를 제공합니다.
주어진 날짜/역의 강수량 합계를 계산하려는 경우 datetime의 날짜 부분인 새 열을 만듭니다.그런 다음 날짜와 역별로 표를 작성하고 Precip을 가운데에 놓습니다.
이 프로그램은 날짜에 대한 수식 열과 날짜/스테이션별 강수량을 계산하는 Tabulate 프로그램이 있는 예제 데이터 세트를 생성합니다.
New Table( "Example", Add Rows( 20 ),
New Script( "Tabulate",
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Precip ) ),
Row Table( Grouping Columns( :Precip Date, :Station ) )
)
)
),
New Column( "Precip Datetime", Numeric, "Continuous", Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
Set Values(
[3660710400, 3660714000, 3660717600, 3660721200, 3660724800, 3660710400,
3660714000, 3660717600, 3660721200, 3660724800, 3660796800, 3660800400,
3660804000, 3660807600, 3660811200, 3660796800, 3660800400, 3660804000,
3660807600, 3660811200]
),
Set Display Width( 186 )
),
New Column( "Station", Character, "Nominal",
Set Values(
{"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "A", "A", "A", "A",
"A", "B", "B", "B", "B", "B"}
)
),
New Column( "Precip", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 3, 4, 5, 1, 1, 4, 5, 6, 7, 5, 4, 5, 6, 7, 8] )
),
New Column( "Precip Date", Character, "Nominal",
Formula( Short Date( :Precip Datetime ) )
)
);