Comment additionner 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 souhaite ajouter une colonne qui SOMME toutes les colonnes d'une rangée, quel que soit le nombre/peu d'entre elles.
J'ai essayé ceci :
TotRow = Trans << Obtenir les noms de colonnes ( 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 ne résume que la première ligne et pas le reste.Le nombre de colonnes et de lignes varie toujours d'une semaine à l'autre.
Re : Comment additionner les 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 additionner les lignes avec des noms de colonnes variables ?C'est le opérateur de transposition matricielle . C'est un opérateur postfix, donc il fonctionne sur l'argument à sa gauche.
Comme Ian@JMP a dit, puisque JMP n'a pas de HSum(), vous devez utiliser VSum() sur la matrice transposée, puis la transposer.
-Jeff
Re : Comment additionner les lignes avec des noms de colonnes variables ?Ian,
C’est bien d’avoir la réponse, il vaut mieux comprendre la réponse.
Dans cette déclaration :
sommeVec = ( VSomme ( tapis ` )) `;
A quoi servent les ' ?Je comprends l'instruction VSum, mais je ne comprends pas pourquoi ` est nécessaire de chaque côté.
Re : Comment additionner les lignes avec des noms de colonnes variables ?Ian,
Merci cela a parfaitement fonctionné !
Re : Comment additionner les lignes avec des noms de colonnes variables ?Si vous souhaitez additionner toutes les colonnes numériques et que vous n'avez pas besoin d'une colonne de formule, vous pouvez faire :
NomsDefaultToHere ( 1 ) ;
// Créer une table avec laquelle travailler
n° = dix ;
NC = 3 ;
dt = NouveauTableau ( "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 ( n° ) ;
// Récupère les données dans une matrice
tapis = dt << ObtenirEn tant queMatrix ;
// Récupère la somme de chaque ligne
sommeVec = ( VSomme ( 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 retransposer.