<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour à tous,
Je recherche des conseils d'utilisateurs JMP plus expérimentés pour le problème suivant.
Je dois souvent travailler avec des tables de données contenant jusqu'à 4 lignes par unité. Cependant, certains paramètres système ne sont enregistrés que pour le premier enregistrement d'une unité individuelle, bien qu'ils soient également applicables aux autres lignes associées à cette unité.
Afin de pouvoir analyser et grouper les données, j'ai besoin que ces paramètres système soient complétés pour toutes les lignes d'une unité.
Comme je n'ai aucune chance de modifier l'enregistrement de données dans la base de données, je dois m'en occuper après l'extraction de la base de données avant toute analyse.
J'ai donc créé une solution de contournement comme indiqué ci-dessous.
Il fournit le résultat souhaité, mais il est très lent et impossible à réaliser pour les tables de données comportant plus de 1000 lignes.
dt = table de données actuelle ();
dt << Trier (par (: unité), Ordre (croissant), Remplacer le tableau);
: param_1 << Formule (pour chaque ligne (: param_1 [row () + 1]) = (if (: unité [row ()]) ==: unit [row () + 1]]
: param_1 [row ()],: param_1 [row () + 1])),
),
Formule d'évaluation
)
Je suis sûr qu'il existe un moyen plus efficace et élégant de résoudre ce problème, mais je dois admettre que mes compétences sont très limitées.
J'apprécie toute contribution d'utilisateurs plus expérimentés.
Merci,
Lutz
Merci beaucoup. Testera le code la première chose au pouvoir aujourd'hui.
Testé mon code sur une table de 40 000 lignes et il est retourné en moins d'une seconde.
Essayez ce code. Cela suppose que vous ayez une table à deux colonnes avec une colonne appelée Unité et l'autre appelée Param_1. Je n'ai fait aucun test de performance, mais cela pourrait rapidement passer rapidement à travers votre table. Ne définit les valeurs que si cela est nécessaire.
dt = Nouvelle table ( "Exemple de paramètre d'unité" ,
Ajouter des lignes ( 16 ) ,
Nouvelle colonne ( "Unité" ,
Personnage ,
Nominal ,
Définir des valeurs (
{ "une" , "une" , "une" , "une" , "b" , "b" , "b" , "b" , "c" , "c" , "c" , "c" , "ré" , "ré" ,
"ré" , "ré" }
)
) ,
Nouvelle colonne ( "Param_1" ,
Numérique ,
Continu ,
Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 32 , 32 , 32 , 32 , 25 , . , . , . , . , 14 , . , . , . , . , 13 , . ] )
)
) ;
// Trier par unité et paramètre, de sorte que s'il en manque, ils se trouvent aux positions 2, 3, 4 d'un ensemble
dt << Trier ( Par ( : unité , : param_1 ) , Ordre ( Ascendant , descendant ) , Remplacer la table ) ;
// Récupère les valeurs de la première ligne
old_unit = dt : unité [ 1 ] ;
old_param = dt : param_1 [ 1 ] ;
pour ( je = 2 , je <= maintenant ( dt ) , je ++,
une unité = dt : unité [ je ] ;
un_param = dt : param_1 [ je ] ;
si ( une unité == old_unit Et est manquant ( un_param ) ,
dt : param_1 [ je ] = old_param ;
) ;
si ( une unité ! = old_unit ,
old_unit = une unité ;
old_param = dt : param_1 [ je ] ;
) ;
) ;