Compter l'élément le plus fréquent dans une colonneJe souhaite identifier facilement l'élément le plus fréquemment utilisé par le nombre de lignes dans une colonne JMP. Je peux facilement déterminer les entrées uniques. Comment puis-je obtenir un décompte à partir de là ?
dt = Current Data Table();
summarize( lotz = by(:LOT));
Automatisation et scriptsRe : Compter l'élément le plus fréquent dans une colonneCela prend en compte la possibilité d'une égalité pour le plus fréquent :
Names Default To Here( 1 );
dt = Data Table( "Big Class" );
dt << Add Rows( {:name = "BARBARA", :age = 13, :sex = "F", :height = 100, :weight = 79} );
Summarize( namez = By( :name ) );
numberz = Transform Each( {v, i}, namez, Length( Where( dt, :name == v ) ) );
max_num = Max( numberz ); //2
big_name = namez[Where( numberz == max_num )]; //{"BARBARA", "ROBERT"}Re : Compter l'élément le plus fréquent dans une colonneLa plateforme de distribution vous donnera un mode.

Il se trouve sous le triangle rouge du paragraphe « Statistiques récapitulatives ». Il suffit de le sélectionner.
Personnaliser les statistiques récapitulatives

puis sélectionnez les statistiques supplémentaires que vous souhaitez afficher

Re : Compter l'élément le plus fréquent dans une colonneSi vous préférez une formule en colonne :
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
New Column( "N by age",
Formula( Col Number( 1, :age ) )
)
et pour identifier le gagnant :
New Column( "max N by age",
Formula( Col Number( 1, :age ) == Col Max( Col Number( 1, :age ) ) )
)
Alternativement, vous pouvez utiliser Summarize :
Summarize( namez = By( :age ), cnt = count(:age) );
ou tableaux/résumés :
Data Table( "Big Class Families" ) << Summary(
Group( :age )
);
Re : Compter l'élément le plus fréquent dans une colonneC'est un beau script, mais pour une raison quelconque, il donne le numéro 5 pour tout.
Merci
Re : Compter l'élément le plus fréquent dans une colonneLa suggestion de résumé est pertinente. Elle me donne deux listes dissociées. Si je pouvais en faire un tableau associatif, je pourrais utiliser la valeur maximale « cnt » pour identifier la valeur « namez » associée.
Re : Compter l'élément le plus fréquent dans une colonneJe l'ai fait et cela semble fonctionner.
Summarize( namez = By( :LOT ), cnt = count(:LOT) );
keys = namez;
values = Eval List(cnt);
AA = Associative Array(keys, values);
For( g = 1, g <= N Items( AA ), g++,
If(values[g] == Max(cnt), mainLOT = keys[g]));Re : Compter l'élément le plus fréquent dans une colonneLa plateforme de résumé est ce que j'utilise généralement pour cela (la façon dont je l'utilise dépend du cas d'utilisation : liens, ai-je besoin du décompte, comment les valeurs manquantes doivent-elles être gérées, etc.)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt_summary = dt << Summary(
Group(:sex),
Freq("None"),
Weight("None"),
output table name("res"),
Private
);
// Using Loc Max
max_row = Loc Max(dt_summary[0, "N Rows"]);
max_val = dt_summary[max_row, 1];
show(max_val);
// Sorting
dt_summary << Sort(By(:N Rows), Replace Table, Order(Descending));
my_val = dt_summary[1, 1];
show(my_val);
Close(dt_summary, no save);
De plus, la simple utilisation de la fonction Mode peut suffire.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
val = Mode(dt[0, "sex"]);
Et il existe de nombreuses autres options (comme vous pouvez déjà le voir dans ce fil).
Re : Compter l'élément le plus fréquent dans une colonneJarmo
Super ! Ça marche et ça inclut les valeurs non numériques. La seule amélioration dont j'ai besoin, c'est de faire en sorte qu'il ignore les données manquantes.
dt = Current Data Table();
val = Mode(dt[0, "process"]);
Re : Compter l'élément le plus fréquent dans une colonneJ'ai fait ce réglage et il semble que j'ai réussi.
dt = Current Data Table();
full_proc_rows = dt << get rows where( !Is Missing( :process ) );
proc_val = Mode(dt[full_proc_rows, "process"]);