Sélectionner les lignes avec des valeurs maximales dans une colonneJe peux utiliser le résumé pour trouver les maximums (multiples dus aux groupes) dans une colonne. Cependant, je souhaite également rechercher dans quelles lignes de la table d'origine les maximums se produisent.
Existe-t-il une solution facile ? Merci pour votre aide!Re : Sélectionner des lignes avec des valeurs maximales dans une colonneBonjour, désolé de répondre à un vieux fil, mais je ne trouve pas d'exemples pertinents ailleurs.
Je voudrais résumer par groupe, puis sélectionner les lignes qui ont un poids maximum par groupe.
J'ai pu résumer, mais je ne sais pas comment sélectionner ces lignes.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :age, :sex ), m = Max( :weight ) );
/* How to select those rows summarized by group?
Merci
Re : Sélectionner des lignes avec des valeurs maximales dans une colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Solution fantastique. Ceci est exactement ce que je cherchais!
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneVous pouvez aussi utiliser OBTENIR DES LIGNES OÙ :
votre tableau = dt << obtenir des lignes où ( : nom de colonne == valeur de crête ) ;
L'avantage de get rows where est que a) c'est une étape et non deux, et b) aucune ligne n'est sélectionnée dans votre tableau.Si vous avez besoin des lignes sélectionnées, l'approche présentée par MOSFETtestEng fera l'affaire.
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneJe sais que c'est deux ans plus tard, mais c'est pour tous ceux qui ont trouvé ce post avec la même question.
Essayez la fonction "Obtenir les lignes sélectionnées" dans votre script.
yourarray = dt << Get Selected Rows;
Maintenant, le tableau "votretableau" contiendra une liste des numéros de lignes sélectionnés.
Pour trouver les lignes avec la valeur maximale, essayez
// finds the maximum value in the columnt
peakvalue = Col Max( :columname);
// selects all rows with the maximum value. (dt is the name of the data table.)
dt << Select Where( :columnname == peakvalue);
// stores a list of the row numbers with the maximum value in this array
yourarray = dt << Get Selected Rows;
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneJ'ai eu JMP10 et j'ai revisité ce problème."Joindre" en utilisant la correspondance de colonne fonctionne bien.Je suppose que la "mise à jour" de la table semble être encore plus simple.
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneFor Each Row() peut être inefficace pour les grandes tables.
Select Where() sera probablement plus rapide :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :age ), m = Max( :height ) );
dt<<SELECT where=""></SELECT>
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneLe scénario a l'air bien. Je vais essayer et je ferai un retour.
Ce qui m'a surpris, c'est que JMP lui-même ne conserve pas l'index (numéro de ligne) des données au maximum quelque part.
DongRe : Sélectionner des lignes avec des valeurs maximales dans une colonneDésolé, tu as raison. J'ai été trop rapide pour répondre. Je vais éditer mon message erroné ci-dessus
Ce que je voulais suggérer, c'est que vous pouvez essayer de combiner Summary avec Update (ou Join, je ne suis pas sûr que Update se trouve dans le menu JMP7 Tables).
Voici un exemple de script qui devrait fonctionner mais qui peut être inefficace pour les très grandes tables de données.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << clear select;
Summarize( g = by( :sex ), m = Max( :age ) );
For( j = 1, j <= N Items( g ), j++,
For Each Row( If( :sex == g[j] & :age == m[j], Row State() = Selected State( 1 ) ) )
);
Re : Sélectionner des lignes avec des valeurs maximales dans une colonneSP,
Merci. Je l'ai essayé et je sélectionne toujours toutes les lignes du tableau d'origine lors de la sélection du deuxième tableau récapitulatif. Chaque fois que je sélectionne une ligne (Max pour le groupe) dans le tableau récapitulatif, chaque ligne du premier tableau récapitulatif du groupe est également sélectionnée.
J'espère que j'ai bien suivi tes instructions. Le 2ème tableau récapitulatif est-il nommé "DataTable By (group, data) By (group)" ?
Pour info, j'utilise JMP7.
DongRe : Sélectionner des lignes avec des valeurs maximales dans une colonneJeff,
Merci. Cela semble être une nouvelle fonctionnalité de JMP 9. J'utilise JMP 7. Je suppose que je peux demander une mise à niveau.
De plus, j'essaie de sélectionner plusieurs maximums dans une colonne. Les valeurs maximales appartiennent à différents groupes spécifiés dans d'autres colonnes.
DongRe : Sélectionner des lignes avec des valeurs maximales dans une colonneRows->Row Selection->Select Dominant sélectionnera les lignes avec les valeurs maximales (ou minimales) dans une colonne ou un groupe de colonnes.
Je crois que vous obtiendrez ce que vous cherchez.
JefRe : Sélectionner des lignes avec des valeurs maximales dans une colonneVous pouvez faire correspondre le tableau d'origine avec le tableau récapitulatif à l'aide de Mettre à jour (menu Tableaux) avec groupe colonne(s) = groupe colonne(s) et données = max(données) comme colonnes correspondantes. Le nombre maximal de lignes sera indiqué par des cellules non manquantes dans la colonne NRows ajoutée.
Ma première réponse était basée sur une réflexion bâclée...
Le message a été modifié par : MS