Implémentation JSL pour la suppression des colonnes contenant toutes les valeurs manquantes d'une même catégorieDans le fichier joint, le champ « Magasin » est divisé en deux magasins, A et B. Si toutes les cellules de la colonne correspondant à un même magasin contiennent des valeurs manquantes, la colonne entière doit être supprimée, comme indiqué dans le résultat attendu. Comment réaliser cela en JSL ?
Je parviens à compter les valeurs manquantes dans chaque colonne, mais je ne trouve pas de moyen de vérifier si toutes les cellules correspondant à un même magasin contiennent des valeurs manquantes. Auriez-vous une méthode appropriée ? Étant donné le grand nombre de colonnes (plusieurs dizaines de milliers), une méthode de calcul complexe serait trop longue.
Automatisation et scriptageRe : Implémentation JSL pour la suppression des colonnes contenant toutes les valeurs manquantes d’une même catégoriePourquoi les prix des bananes et des durians sont-ils conservés ? Tous les prix des bananes (catégorie A) et des durians (catégorie
sont manquants.
Re : Implémentation JSL pour la suppression des colonnes contenant toutes les valeurs manquantes d’une même catégorieSalut,
En suivant scrupuleusement votre règle, j'ai conçu une option sans script. Cependant, comme l'a souligné @mmarchandFSLR , le résultat ne correspondrait pas à vos « Résultats » car la banane et le durian seraient exclus/supprimés.
1) Empilez toutes vos colonnes (voir l'exemple ci-joint).
2) Utilisez la formule :
Col Sum( Is Missing( :Data ), :Store, :Label ) / Col Sum( 1, :Store, :Label )
3) Ajoutez une colonne de contrôle principale « LIGNES À SUPPRIMER » avec la formule :
Col Max( :MISSING by STORE PCT, :Label )
4) Supprimez les lignes marquées.
5) Divisez le tableau résultant par « Étiquette ».
Meilleur,
TS
Re : Implémentation JSL pour la suppression des colonnes contenant toutes les valeurs manquantes d’une même catégorieJe vous suggère de créer un tableau qui ressemble à ceci.

Vous pouvez ensuite parcourir le tableau et établir une liste des colonnes qui correspondent aux valeurs N vs N manquantes pour chaque magasin que vous devez supprimer.
Voici un exemple de script pour créer le tableau
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
Vous pourriez utiliser la plateforme Tabulate pour créer le tableau, mais vous avez indiqué avoir des milliers de colonnes. Je ne pense pas que Tabulate soit la solution dans ce cas, mais le script ci-dessus devrait suffire.