stockage de la variable à partir du fichier et utilisation de la fonction max dans les scripts jslbonjour les membres,
suis un nouvel utilisateur, je viens de commencer les scripts JSL, pourriez-vous suggérer comment exécuter le besoin ci-dessous
j'ai 2 fichiers,
File1 : contient des données avec des milliers de colonnes (chaîne) et de lignes (nombres)
File2 : contient quelques listes de colonnes que j'ai créées manuellement pour sélectionner la colonne intéressée dans file1
mon besoin est de faire la fonction max basée sur la liste du fichier 2 et de créer une nouvelle colonne dans le fichier 1
ci-dessous est le code que j'ai essayé et qui n'a pas fonctionné comme prévu.
dt = Ouvrir ("C:/File2.csv")
liste = dt << obtenir le nom ; // list = est essentiellement quelques noms de colonnes aléatoires de file1 = row 1 ,row2, row10, etc.
dt1 = Ouvrir ("C:/Fichier1.jmp")
Nouvelle colonne ( "liste max",Numérique,Formule (Max (liste)) );
Tableau de donnéesScriptRe : stocker une variable à partir d'un fichier et utiliser la fonction for max dans les scripts jslVous ne savez pas à quoi ressemblent vos données, mais voici une suggestion. Ce n'est pas la solution la plus simple et nécessite JMP16 +
Names Default To Here(1);
dt = New Table("File2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Format("Best", 12), Set Values({"Column 1", "Column 2"}))
);
dt1 = New Table("File1",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([2, 2, 2])),
New Column("Column 3", Numeric, "Continuous", Format("Best", 12), Set Values([3, 3, 3]))
);
Show(dt << Get Name); // this will get name of the datatable not columns
max_list = Column(dt, "Column 1") << get values;
expr_max = Expr(Max());
For Each({col}, max_list,
Insert Into(expr_max, NameExpr(AsColumn(Column(dt1, col))))
);
Show(NameExpr(expr_max));
Eval(EvalExpr(
dt1 << New Column("MaxList", Numeric, Continuous, Formula(
Expr(NameExpr(expr_max))
));
));
Insérer une expression dans une autre en utilisant Eval Insert, Eval Expr, Parse et Substitute pour une bonne lecture
Re : stocker la variable du fichier et utiliser la fonction max dans les scripts JSLmerci beaucoup txnelson,
ça a marché . faisait une simple erreur de ne pas utiliser le nom de colonne Maxlist dans le fichier2
Mais j'ai une autre erreur : l'espace de noms " office1.close:today " n'est pas défini et renvoie la valeur maximale parmi l'argument ou les valeurs contenues dans la matrice unique de l'argument de liste.
" office1.close:today " est l'un des fichiers2
si j'ouvre la colonne maxlist file1 et clique sur modifier la formule, l'erreur se déclenche.
Re : stocker la variable du fichier et utiliser la fonction max dans les scripts JSLJ'ai jeté un deuxième coup d'œil à votre dernier message et je pense avoir un nouveau script qui résoudra le problème de nom complexe que vous avez exposé dans ce message.
// The code below this line is the that does the calculations The code above this line would
// not normally be included
Names Default To Here( 1 );
// point to the large data table with lots of rows and columns
dt = Data Table( "Main" );
// If you are opening the table from a folder, this statement would be
// dt = open("the path to the table");
// point to the second data table that contains a list of columns to be summed
dtMax = Data Table( "config" );
// If you are opening the table from a folder, this statement would be
// dtMax = open("the path to the table");
// Just added a short pause so one can see the original tables before changing
// Create the new columns
For( i = 1, i <= N Cols( dtMax ), i++,
sumList = Column( dtMax, i ) << get values;
dt << New Column( Column( dtMax, i ) << get name );
nameList = ":\!"" || sumList[1] || "\!"n";
For( k = 2, k <= N Rows( dtMax ), k++,
Insert Into( nameList, ", :\!"" || sumList[k] || "\!"n" )
);
Column( dt, N Cols( dt ) ) << set formula( Eval( Parse( "max(" || nameList || ")" ) ) );
);Re : stockage d'une variable à partir d'un fichier et utilisation de la fonction for max dans un script jsl
merci pour la suggestion, cela n'a pas fonctionné comme prévu, je fais peut-être quelque chose de mal. pour être plus clair, j'ai fourni à quoi ressemble le fichier et les exigences
file1 ressemble à ceci (c'est ma table principale où je voudrais trouver les valeurs maximales de office1,2,4)
| bureau1 | bureau2 | bureau3 | bureau4 | bureau 5 |
| 2 | 3 | 0 | 6 | 1 |
| 3 | 2 | 6 | 4 | 4 |
| 2 | 5 | 3 | 2 | 3 |
| 1 | 0 | 2 | 3 | 2 |
| 4 | 1 | 2 | 7 | 1 |
| | | | | |
Résultat attendu avec la nouvelle colonne Maxlist (valeurs de office1,2,4)
solution simple : Nouvelle colonne("MaxList", Numérique, Continu, Formule(Max(:"office1",:"office2,:"office4")));
| bureau1 | bureau2 | bureau3 | bureau4 | bureau 5 | .. | Liste maximale | | |
| 2 | 3 | 0 | 6 | 1 | | 6 | | |
| 3 | 2 | 6 | 4 | 4 | | 4 | | |
| 2 | 5 | 3 | 2 | 3 | | 5 | | |
| 1 | 0 | 2 | 3 | 2 | | 3 | | |
| 4 | 1 | 2 | 7 | 1 | | 7 | | |
| | | | | | | | | |
étant donné que ma liste maximale change quotidiennement, j'aimerais utiliser un autre fichier2 comme paramètre d'entrée pour la liste maximale
fichier2 : liste des noms de colonnes donnés en paramètre d'entrée et exécution du script
à la recherche d'une solution où je peux donner la liste maximale dans le fichier 2 et l'exécuter dans le fichier 1
Nouvelle colonne (« MaxList », numérique, continue, formule (Max ( basé sur la liste file2 »)));