Diviser le tableau en fonction de la liste des noms de colonnesBonjour la communauté JMP, j'espère que vous pourrez m'aider à résoudre ce problème :
J'ai créé un script qui permet aux utilisateurs de calculer des valeurs SD 1x, 2x et/ou 3x pour plusieurs concentrations d'échantillons avec un facteur donné (à saisir). Les valeurs SD 1x, 2x et/ou 3x peuvent toutes être choisies via 3 cases à cocher. Cette première partie fonctionne parfaitement.
En fonction du nombre de cases à cocher sélectionnées, le tableau de données résultant donne un nombre variable de colonnes que je souhaite diviser en un nouveau tableau de données.
J'ai essayé de créer un deuxième script qui divise la table de données en fonction de toutes les colonnes SD présentes (toujours à partir de la colonne 3) mais sans succès. Voici mon script jusqu'à présent :
Names Default To Here( 1 );
dt1 = Data Table( "SD Calculation" );
//Get list of Column names
ColList = dt1 << Get Column Names();
//Split dt1 based on ColList
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split( ColList[3] ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Le tableau divisé résultant ressemble à ceci et il manque la plupart des données :

Voici à quoi cela devrait ressembler (je ne peux y parvenir qu'en spécifiant tous les noms de colonnes, cependant, toutes les colonnes ne seront pas présentes dans chaque table (cela est basé sur la sélection de l'utilisateur) :

Lorsque tous les calculs SD sont choisis (±1-3 SD pour 5 concentrations d'échantillon), 30 colonnes doivent être présentes.
Le but de mon script :
Les valeurs nomRP sont : 50, 71, 100, 141 et 200 et des valeurs SD de 1 à 3x peuvent être calculées pour chacune de ces valeurs nomRP. Tous les résultats calculés doivent être répartis dans un nouveau tableau de données. Avec ces données, je souhaite créer une figure dans le générateur de graphiques affichant des plages basées sur les valeurs SD calculées.
Cordialement,
Pim.
-Edit : ajout du tableau "Calcul SD".
Mélange et nettoyage des donnéesRe : Diviser la table en fonction de la liste des noms de colonnesMerci beaucoup Pim/Hadley pour la question/réponse sur ce sujet !
Je me rends compte que c'est un vieux post, mais je voulais en laisser une miette à tous ceux qui viendront après.
J'essayais de faire quelque chose de similaire aujourd'hui, dans le sens de la solution de Hadley publiée ci-dessus, et en même temps de comprendre l'imbrication Approche Eval(Eval Expr(Expr())) (je travaille toujours sur cette dernière...).
Après avoir joué un peu, j'ai trouvé ça :
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(Eval Expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);Cela me donne le même résultat que celui-ci à partir de la solution de Hadley :
Eval(
Eval Expr(
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);
)
);
Re : Diviser la table en fonction de la liste des noms de colonnesHadley, c'était exactement ce que je cherchais.
Merci beaucoup et merci également d'avoir partagé le message sur Éval(Eval Expr(Expr())). Cela me sera utile dans mes futures aventures de script !
Re : Diviser la table en fonction de la liste des noms de colonnesSalut,
Je pense que c'est l'un de ces moments où Eval(Eval Expr(Expr())) aiderait.Jetez un œil au code ci-dessous et voyez s’il fait ce que vous espérez.Aussi voici un article sur ce sujet qui explique ces types de méthodes.
Names Default to Here(1);
dt1=Data Table("SD Calculation");
//Get list of Column names
ColList=dt1<<GET column="" names=""></GET>