J'essaie de créer une colonne qui calcule la somme du décalage de 24 lignes. Dans ce cas, j'ai une colonne "Precip" qui contient les totaux horaires des précipitations. Il y a une deuxième colonne "station de précipitations" indiquant à partir de quel endroit chaque valeur a été enregistrée. J'ai trié les colonnes en fonction de "DateTime" et de la "Precipitation Station". Je cherche un moyen efficace de résumer les 24 valeurs précédentes dans la colonne Precip, créant ainsi une nouvelle colonne qui me dit combien il a plu au cours des 24 heures précédentes. Ce total de 24 heures est spécifique à la station, il ne peut donc pas calculer les valeurs de décalage de 24 si les précipitations de décalage de 24 ne correspondent pas.
J'ai fini par comprendre cela par moi-même, c'est une simple fonction de sommation. J'ai pensé que je le posterais au cas où quelqu'un d'autre aurait besoin de faire quelque chose comme ça.
If( :Precipitation Station == Lag( :Precipitation Station, 1 ),
Summation( i = 1, 24, Lag( :Precipitation, i ) ),
:Precipitation
);
Je n'essaie pas réellement de calculer le total des précipitations pour une station/date donnée, mais plutôt une station/période de 24 heures précédente. ainsi, par exemple, si le DateTime pour un for donné est 1/3/2020 09:00:00 AM, je voudrais prendre les 24 valeurs précédentes dans la colonne precip et les additionner. Donc, en commençant par le 03/01/2020 à 08:00:00 et en remontant jusqu'au 02/01/2020 à 09:00:00. Essentiellement une fenêtre de temps mobile de 24 heures. Cette colonne me donnerait donc la pluie précédente au cours des 24 heures précédentes pour chaque ligne de mon tableau de données.
Si vous essayez de calculer la somme des précipitations pour un jour/une station donnés, créez une nouvelle colonne qui est juste la partie date de la date/heure.Faites ensuite une tabulation par date et station, et mettez Precip au milieu.
Ce programme crée un exemple de jeu de données avec une colonne de formules pour la date et un programme Tabuler pour calculer les précipitations par date/station.
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 ) )
)
);