<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut,
J'ai cinq colonnes numériques. Nécessité de créer une nouvelle colonne reflétant les valeurs maximales dans chaque ligne de la colonne. Au lieu de renvoyer la valeur, j'ai besoin de mettre le nom de colonne correspondant dans chaque ligne.
Merci
Sam
salut Sam,
au niveau le plus élémentaire, essayez ceci:
dt = Nouvelle table ( "table de données" ,
Nouvelle colonne ( "X1" , Formule ( Uniforme aléatoire () ) ) ,
Nouvelle colonne ( "X2" , Formule ( Uniforme aléatoire () ) ) ,
Nouvelle colonne ( "X3" , Formule ( Uniforme aléatoire () ) ) ,
Nouvelle colonne ( "X4" , Formule ( Uniforme aléatoire () ) ) ,
Nouvelle colonne ( "X5" , Formule ( Uniforme aléatoire () ) ) ,
ajouter des lignes ( 100 )
) ;
dt << Nouvelle colonne ( "Nom de Col Maximum" ,
Personnage ,
formule (
Si (
: X1 == Maximum ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X1" ,
: X2 == Maximum ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X2" ,
: X3 == Maximum ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X3" ,
: X4 == Maximum ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X4" ,
: X5 == Maximum ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X5" ,
)
)
) ;
à partir de là, vous pouvez le généraliser davantage.
veuillez noter que s'il y a des valeurs égales qui sont le maximum dans une ligne, cette formule préférera la colonne par son emplacement dans l'instruction if (pour le meilleur et pour le pire).
Cela peut être fait avec une formule de colonne mais c'est plus facile avec un petit script JSL. La boucle dans la dernière ligne identifie la colonne avec la valeur la plus élevée et place son nom dans la nouvelle colonne "max". Si plusieurs colonnes ont la même valeur maximale, la première instance sera sélectionnée.
dt = Tableau de données actuel () ;
cols = dt << getcolumn noms ( numérique ) ;
Newcol = dt << Nouvelle colonne ( "max" , personnage ) ;
Pour chaque rangée ( Newcol [] = cols [ Loc Max ( Matrice ( cols ))] << avoir un nom ) ;