Réduction de 80 valeurs uniques à 10 valeurs uniquesJ'ai une colonne dans ma table de données qui contient plus de 80 valeurs de texte uniques (nominales). Je voudrais prendre ces 80 valeurs nominales et les réduire à 10 dans JSL en regroupant les valeurs qui ne figurent pas dans le top 10 (par nombre d'occurrences) dans un groupe appelé "autre". Quel est le moyen le plus simple d'accomplir cela en JSL ? Merci pour votre aide!
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@twillkickers , la réponse à votre question est "oui", avec JSL vous pouvez manipuler soit le Graph Builder soit le Pareto Plot pour fournir l'affichage que vous recherchez. Cependant, l'option Packed Bar dans Graph Builder vous offre presque tout ce que vous voulez (à l'exception de l'étiquette pour le total combiné de vos causes inférieures). L'affichage de ce total nécessitera quelques manipulations comme mentionné précédemment. Quelque chose à considérer avant de décider si les manipulations supplémentaires en valent la peine est que ce total est en fait une information redondante - la hauteur relative de la barre et l'axe y transmettent visuellement cette information.
Cela dit, si vous avez toujours besoin que le total des "autres" colonnes soit affiché, voici une approche que vous pouvez adopter (toujours en utilisant Nicardipine.jmp comme exemple) :
Utilisez le script de la plateforme de distribution fourni précédemment pour créer une colonne pour les niveaux de cause (1-9 et 10+)
Créez une colonne de formules pour vos nouvelles catégories, c'est-à-dire :
If( :Level Investigator Name < 10, :Investigator Name, "Other")
Utilisez Graph Builder pour créer un graphique à barres pour les nouvelles catégories classées par la colonne Niveaux (en supposant que vous vouliez la catégorie "Autre" à droite, sinon, faites simplement un clic droit sur l'axe et sélectionnez l'ordre par nombre pour voir où "Autre" correspond parmi vos 9 principales causes) :
Graph Builder(
Size( 869, 318 ),
Show Control Panel( 0 ),
Variables(
X(
:New Investigator Name,
Order By(
:Level Investigator Name,
Ascending,
Order Statistic( "Sum" )
)
)
),
Elements( Bar( X, Legend( 3 ), Label( "Label by Value" ) ) )
);
Toutes ces actions peuvent être collées ensemble pour créer un script. Si vous avez besoin d'aide, je vous suggère de consulter l'Aide->Livres->Guide de script et l'Aide->Index de script et de rechercher "Nouvelle colonne" pour obtenir la syntaxe permettant de créer une nouvelle colonne de formules dans votre table de données.
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@jerry_cooper merci. J'ai une question sur le diagramme de Pareto. JSL peut-il automatiquement prendre tout autre chose que les dix principales causes et les regrouper dans une barre "Autre", au lieu de devoir spécifier les causes que je veux regrouper individuellement ? Quand je dis à graph builder de regrouper tout autre chose que les 10 premières valeurs, le code JSL finit par ressembler à ceci :
Pareto Plot(
Cause( :Cause ),
Show **bleep** Percent Curve( 0 ),
Combine Causes(
{"Cause1","Cause2","Cause3","Cause4","Cause5","Cause6"}
),
SendToReport(
Dispatch( {"Plots"}, "102", ScaleBox, {Max( 4512.67559361611 )} ),
Dispatch( {"Plots"}, "106", ScaleBox, {Max( 100.059325800801 )} ),
Dispatch( {"Plots"}, "Pareto Report", FrameBox, {Frame Size( 1061, 702 )} )
)
);Pour mon application, les causes peuvent changer de priorité de temps à autre. J'aimerais que JSL recalcule automatiquement les dix principales causes à chaque fois que le diagramme de Pareto est généré.
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@twillkickers , vous avez raison, le graphique Barres remplies n'affichera que les valeurs des barres principales. Si vous devez afficher les valeurs, l'approche la plus simple peut être d'utiliser l'option Pareto Plot (notez que j'ai désactivé la courbe de pourcentage cumulé et choisi Labels et une couleur uniforme dans le menu du triangle rouge Causes 
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@jerry_cooper , Merci pour votre aide! Lorsque vous utilisez le style de barre "Empaqueté", existe-t-il un moyen d'étiqueter la barre avec les autres catégories ? Mes étiquettes de quantité pour chaque barre n'apparaissent que sur les barres non emballées. Merci pour votre aide.
Objet : Réduire 80 valeurs uniques à 10 valeurs uniquesSalut @twillkickers ,
Je ne sais pas quel est le but ultime de votre demande, mais s'il s'agissait de créer un graphique de style Pareto, vous pouvez y parvenir sans script ni création de nouvelle colonne.
Si vous avez la version 14, le nouvel élément "Packed Bars" dans Graph Builder fera ce que vous décrivez. À l'aide de la table de données Nicardipine.jmp du répertoire Sample Data, faites glisser la colonne Investigator Name vers le rôle Y, puis sélectionnez "Packed" comme style de barre, tapez 9 dans Packed Primaries, et enfin, sélectionnez "Separate Stack" dans la liste déroulante Emplacement emballé :

Une autre option, en particulier pour les versions antérieures à la v14, vous pouvez sélectionner le diagramme de Pareto dans le menu Qualité et processus. Dans le menu Triangle rouge du tracé, sélectionnez l'élément de menu Causes=>Combiner les causes, choisissez le bouton radio « Dernières causes » et entrez 71 dans la case du nombre :

Si vous voulez vraiment qu'un script crée une nouvelle colonne avec les niveaux 1 à 10, ce qui suit (en utilisant la plate-forme de distribution) est un moyen. Remplacez simplement les noms de votre table de données et de vos colonnes, le cas échéant :
Names Default to Here( 1 );
dt = Open("$Sample_Data/Nicardipine.jmp");
dist = Distribution( Nominal Distribution( Column( :Investigator Name ) ) );
dist << Order By( Count Descending );
dist << Save( Level Numbers );
dist << Close Window;
therows = dt << Get Rows Where( :Level Investigator Name >= 10 );
dt:Level Investigator Name[ therows ] = 10;
J'espère que cela t'aides.
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@twillkickers ,
Il existe de nombreuses façons de faire ce que vous voulez. Comme Tabuler, Distribution ou Résumé. Je vais vous montrer comment mettre en œuvre en utilisant l'approche récapitulative
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get frequency
dt1 = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" )
);
// Let us assume weight column in this data table represents the frequency in your case
dt2 = dt1 << Sort(By(:N Rows),Order(descending));
// Select only top 10
dt2 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt2 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt2 << Delete Rows; Objet : Réduire 80 valeurs uniques à 10 valeurs uniquesComment créer une colonne qui répertorie la fréquence des valeurs de texte uniques ?
Objet : Réduire 80 valeurs uniques à 10 valeurs uniques@twillkickers ,
Avez-vous également une colonne qui répertorie la fréquence ou le nombre d'occurrences de chacune des valeurs de texte uniques ? Si vous ne le faites pas, la première étape consiste à intégrer ces données dans votre table de données. Une fois disponible, vous pouvez trier la colonne par ordre décroissant et sélectionner les 10 premières lignes. Voici comment je procéderais :
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Let us assume weight column in this data table represents the frequency in your case
dt1 = dt << Sort(By(:weight),Order(descending));
// Select only top 10
dt1 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt1 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt1 << Delete Rows;