aide à la création d'une colonne qui est une somme cumulée basée sur d'autres colonnes<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie de créer une nouvelle colonne dans JSL qui sera une somme continue des lignes précédentes de cette colonne.J'ai une colonne intitulée "Débit quotidien total". J'ai également une colonne qui marque l'emplacement d'où proviennent les données dans "le débit quotidien total" (appelez cela "Site"). Par exemple, Dites le 1er octobre (qui est spécifié dans une autre colonne appelée "jour de l'année de l'eau") j'ai un débit quotidien total de 1000, et ce jour se trouve être le jour 1 de l'année.Je veux une colonne dont la première ligne sera = 1000. puis disons le deuxième jour, qui sera la deuxième ligne du tableau, le 2 octobre, il y a un flux quotidien total de 5000, je voudrais la nouvelle ligne dans le nouveau la colonne doit être 1000 + 5000 = 6000. puis dites que le 3 octobre a un flux quotidien de 3000, donc la ligne suivante sera 6000 + 3000 = 9000. Ceci doit continuer pour chaque ligne de ma table qui partage le même nom d'emplacement (Site) et est dans la même "année" que celle spécifiée par la colonne "jour de l'année hydrologique" (1-365).
Re : aide à la création d'une colonne qui est une somme cumulée basée sur d'autres colonnescontent que ça te soit utile,
Peut-être que le oneliner peut être basé sur ceci :
Re : Syntaxe : comment créer une colonne d'index par ID
cela le rendrait également indépendant du tri et maintiendrait une formule active.
mais je ne sais pas comment m'y prendre.
Meilleur
Re : aide à la création d'une colonne qui est une somme cumulée basée sur d'autres colonnesSalut Ron,
C'est une excellente solution, merci d'avoir posté.
La formule de la nouvelle colonne sumheightbysex comporte une légère faute de frappe. Ça devrait être
If(Row() == 1, :height, :sex == Lag(:sex, 1), :height + Lag(:sumhightbysex, 1), :sex != Lag(:sex, 1), :height, Empty())
en utilisant la valeur de la nouvelle colonne à ajouter à la hauteur, et non la hauteur de la ligne précédente, :height + Lag(:height), 1).
bonjour
Re : aide à la création d'une colonne qui est une somme cumulée basée sur d'autres colonnesSalut un porteur ,
jusqu'à ce que quelqu'un de plus intelligent propose une doublure, vous pouvez essayer la solution de mon plombier :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Row", formula( :Row() ), eval formula );
dt:row << delete formula;
// assuming age is time and sex is site
dt << Sort( By( :sex, :age ), Order( Ascending, Ascending ), replace table );
// now sum as you want it
dt << New Column( "sumhightbysex",
formula( If( Row() == 1, :height, :sex == Lag( :sex, 1 ), :height + Lag( :height, 1 ), :sex != Lag( :sex, 1 ), :height, Empty() ) ), eval formula
);
dt:sumhightbysex << delete formula;
// sort to original order
dt << Sort( By( :Row ), Order( Ascending ), replace table );
// clean up
dt << delete column (row);
Speak( "bob's your uncle" );
Re : aide à la création d'une colonne qui est une somme cumulée basée sur d'autres colonnesSi vous exécutez JMP version 12, si vous cliquez avec le bouton droit sur le champ d'en-tête de colonne dans la table de données, la colonne Nouvelle formule -> Ligne -> Cumul devrait fonctionner sans avoir à recourir à JSL. Voir ci-dessous:
