jsl pour créer un sous-ensemble de table des valeurs les plus fréquentes dans une colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour à tous,
Je suis un nouvel utilisateur qui apprend encore les bases et je peux généralement trouver les réponses dont j'ai besoin en effectuant une recherche, mais celle-ci m'échappe.
Je recherche un script pour créer un sous-ensemble de tableau des 10 valeurs les plus fréquentes d'une colonne sélectionnée. Mon travail actuel consiste à créer un tableau récapitulatif, à trier le tableau récapitulatif par valeur décroissante, à sélectionner les dix premières lignes, puis à revenir au premier tableau et à créer un sous-ensemble des lignes sélectionnées. Je suis certain qu'il existe une solution élégante mais je ne la trouve tout simplement pas. Merci!
Re : jsl pour créer un sous-ensemble de table des valeurs les plus fréquentes dans une colonneSalut MS,
Merci pour votre réponse, j'aurais dû mentionner dans mon message d'origine que les données qui m'intéressaient étaient des caractères et non des chiffres. Mais je mets votre réponse en favori car je devrai effectuer le même résumé avec des données numériques à l'avenir.
Re : jsl pour créer un sous-ensemble de table des valeurs les plus fréquentes dans une colonneMerci Jim, cela a parfaitement fonctionné.
Re : jsl pour créer un sous-ensemble de table des valeurs les plus fréquentes dans une colonneUne alternative serait d'utiliser Summarize() au lieu d'un tableau récapitulatif, puis d'ignorer également l'étape de tri en utilisant la fonction Rank(). Malheureusement, les options de statistiques dans Summarize sont limitées aux colonnes numériques ; l'exemple de script ci-dessous ne fonctionnera donc pas pour les colonnes de caractères.
dt = Ouvrir ( "$SAMPLE_DATA/grande classe.jmp" ) ;
n = 3 ; // N° des valeurs les plus fréquentes
Résumer ( g = par ( : âge ) , c = Compter ( : âge )) ;
dt << sous-ensemble ( Lignes ( dt << sélectionner où ( Contient ( Inverse ( g [ Rang ( c )])[ 1 :: n ] , Carboniser ( : âge ))))) ;
Re : jsl pour créer un sous-ensemble de table des valeurs les plus fréquentes dans une colonneVoici un exemple de script qui fonctionne en utilisant uniquement les 5 premières sélections, car l'exemple de table de données est si petit.Mais je pense que vous pouvez voir comment cela fonctionne.
Les noms par défaut sont ici ( 1 );
dt= ouvrir ( "$SAMPLE_DATA/grande classe.jmp" );
dtsumm = dt << Résumé (
Groupe( :hauteur ),
Fréq( "Aucun" ),
Poids( "Aucun" )
);
dtsumm << Trier ( Par ( : N lignes ), Ordre ( décroissant ), Remplacer la table ( 1 ) );
dtsumm << sélectionner où ( rangée ()> 5 )
dtsumm << supprimer des lignes ;
dtfinal = dt << Rejoindre (avec(dtsumm) ,
En faisant correspondre les colonnes ( :height = :height ),
Supprimer les multiples ( 0 , 0 ),
Inclure les non-correspondances ( 0 , 0 ),
Conserver l'ordre de la table principale ( 1 )
);