Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?J'ai cette formule mais elle ajoute la valeur sur la même ligne.
If(
:Column 2 != Lag( :Column 2 ) | Row() == 1, :Column 1,
Row() == 2 | Lag( :Column 2, 1 ) != :Column 2, :Column 2 - (:Column 1 + Lag( :Column 1, 1 )),
Lag( :Result ) - :Column 1
)
Ce que je voudrais faire, c'est quelque chose comme ceci :
Les colonnes 1 et 2 reçoivent des valeurs. Si la valeur de la colonne 2 change, le résultat devrait être similaire à la valeur de départ de la colonne 1.
| Colonne 1 | Colonne 2 | Résultat | (devrait être un calcul) |
| dix | 20 | dix | même valeur dans la colonne 1 |
| 2 | 20 | dix | Colonne 2 - Colonne 1 ligne 1 (20-10) |
| 5 | 20 | 8 | Colonne 2 - Colonne 1 lignes 1 à 2 (20 - 12 +2) |
| 3 | 20 | 3 | Colonne 2 - Colonne 1 lignes 1 à 3 (20 - 12 +2 +5) |
| 2 | 15 | 2 | |
| 1 | 15 | 13 | |
| 3 | 15 | 12 | |
| 4 | 15 | 9 | |
Comment puis-je créer une équation de tableau comme celle-ci ?
Automatisation et scriptsles fenêtresRe : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?@UserID16644 , si votre :Column2 a à nouveau la même valeur, vous obtiendrez des résultats indésirables.
New Table( "Untitled 155",
Add Rows( 12 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [10, 2, 5, 3, 2, 1, 3, 4, 6, 2, 5, 3] )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [20, 20, 20, 20, 15, 15, 15, 15, 20, 20, 20, 20] )
),
New Column( "Result",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
:Column 2 != Lag( :Column 2 ) | Row() == 1, :Column 1,
Row() == 2 | Lag( :Column 2, 2 ) != :Column 2,
:Column 2 - Lag( :Column 1 ),
Lag( :Result ) - Lag( :Column 1 )
)
)
),
New Column( "Result 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == Col Min( Row(), :Column 2 ),
:Column 1,
(:Column 2 - Col Cumulative Sum( :Column 1, :Column 2 )) + :Column 1
)
)
)
)

Re : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?Les variables By sont des arguments que vous pouvez utiliser avec les fonctions statistiques Col Fonctions statistiques (jmp.com)

Names Default To Here(1);
dt = New Table("Untitled 4",
Add Rows(8),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([10, 2, 5, 3, 2, 1, 3, 4])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([20, 20, 20, 20, 15, 15, 15, 15])),
New Column("Result", Numeric, "Continuous", Format("Best", 12), Set Values([10, 10, 8, 3, 2, 13, 12, 9]))
);
dt << New Column("Calc",
Numeric,
Continuous,
Formula(
If(Row() == Col Min(Row(), :Column 2),
:Column 1
,
:Column 2 - Col Cumulative Sum(:Column 1, :Column 2) + :Column 1
)
)
);Re : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?Oui, la colonne 2 agit comme un compteur réinitialisé. Comment utilisez-vous byVar dans cela ? Je n'ai jamais entendu et utilisé cette fonction auparavant
Re : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?Vous pouvez utiliser la somme cumulée col
If(
Row() == 1, :Column 1
,
:Column 2 - Col Cumulative Sum(:Column 1) + :Column 1
)
Names Default To Here(1);
dt = New Table("Untitled 4",
Add Rows(8),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([10, 2, 5, 3, 2, 1, 3, 4])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([20, 20, 20, 20, 15, 15, 15, 15])),
New Column("Result", Numeric, "Continuous", Format("Best", 12), Set Values([10, 10, 8, 3, 2, 13, 12, 9]))
);
dt << New Column("Calc",
Numeric,
Continuous,
Formula(
If(
Row() == 1, :Column 1
,
:Column 2 - Col Cumulative Sum(:Column 1) + :Column 1
)
)
);

Je suppose que la colonne 2 est une sorte de regroupement qui devrait réinitialiser votre « compteur » ? Vous pouvez utiliser Col Min pour détecter ce changement et utiliser cette colonne comme byVar si nécessaire
Re : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?Désolé, il est 10 heures
| Colonne 1 | Colonne 2 | Résultat | (devrait être un calcul) |
| dix | 20 | dix | même valeur dans la colonne 1 |
| 2 | 20 | dix | Colonne 2 - Colonne 1 ligne 1 (20-10) |
| 5 | 20 | 8 | Colonne 2 - Colonne 1 lignes 1 à 2 (20 - 10 +2) |
| 3 | 20 | 3 | Colonne 2 - Colonne 1 lignes 1 à 3 (20 - 10 +2 +5) |
| 2 | 15 | 2 | |
| 1 | 15 | 13 | |
| 3 | 15 | 12 | |
| 4 | 15 | 9 | |
Re : Comment utiliser correctement la fonction LAG dans les instructions conditionnelles ?D'où vient la valeur 12 dans les calculs de la ligne 3+ ?