Comment SOMMER des lignes avec des noms de colonnes variables ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un tableau avec un nombre variable de colonnes.Je veux ajouter une colonne qui SOMME est toutes les colonnes d'affilée, peu importe combien / peu apparaissent.
J'ai essayé ceci :
TotRow = Trans << Obtenir les noms de colonne ( Numérique ) ;
TR = N articles ( TotRow ) ;
Trans << Nouvelle colonne ( "Temps total" ,
Numérique ) ;
Pour chaque ligne ( : Temps total [] = Somme ( Colonne ( TotRow [ 1 :: TR ])[])) ;
Mais cela n'additionne que la première ligne et pas le reste.Le nombre de colonnes et de lignes est toujours variable d'une semaine à l'autre.
Re : Comment SOMMER des lignes avec des noms de colonnes variables ?Jeff,
Merci pour la réponse, et surtout le lien.Chaque jour où j'apprends quelque chose de nouveau est une bonne journée.
Re : Comment SOMMER des lignes avec des noms de colonnes variables ?C'est le opérateur de transposition matricielle . C'est un opérateur postfixé, il fonctionne donc sur l'argument à sa gauche.
Comme Ian@JMP dit, puisque JMP n'a pas de HSum(), vous devez utiliser VSum() sur la matrice transposée, puis la transposer à nouveau.
-Jeff
Re : Comment SOMMER des lignes avec des noms de colonnes variables ?Ian,
C'est bien d'avoir la réponse, c'est mieux de comprendre la réponse.
Dans cette déclaration :
sommeVec = ( VSum ( tapis ` )) `;
A quoi servent les ` ?Je comprends l'instruction VSum, mais pas pourquoi ` est nécessaire de chaque côté.
Re : Comment SOMMER des lignes avec des noms de colonnes variables ?Ian,
Merci cela a parfaitement fonctionné !
Re : Comment SOMMER des lignes avec des noms de colonnes variables ?Si vous voulez additionner toutes les colonnes numériques et que vous n'avez pas besoin d'une colonne de formules, vous pouvez faire :
NomsDefaultToHere ( 1 ) ;
// Créer une table avec laquelle travailler
nr = dix ;
NC = 3 ;
dt = NouveauTable ( "Quelques données continues" ) ;
Pour ( c = 1 , c <= NC , c ++,
dt << NouvelleColonne ( "Col" || Carboniser ( c ) , Numérique , Continu , Formule ( Entier aléatoire ( 1 , dix ))) ;
) ;
dt << Ajouter des lignes ( nr ) ;
// Récupère les données dans une matrice
tapis = dt << GetAsMatrix ;
// Récupère la somme de chaque ligne
sommeVec = ( VSum ( tapis ` )) `;
// Ajoute la colonne somme
dt << NouvelleColonne ( "Somme" , Numérique , Continu , Valeurs ( sommeVec )) ;
Remarque JSL n'a pas de 'HSum()', vous devez donc transposer puis transposer à nouveau.