En fait, je suis venu sur la communauté pour voir s'il y avait déjà quelque chose de nouveau à ce sujet, toujours pas certain qu'il me manque quelque chose maintenant intégré...
Je souhaite, en utilisant JSL, remplacer certaines valeurs (comme -999 ou> 998) par des valeurs manquantes dans de nombreuses colonnes (éventuellement toutes les colonnes numériques). Ce n'est pas difficile de scénariser ça. bel exemple de ce que je veux dire et de ce que je fais actuellement ici:
https://community.jmp.com/t5/Discussions/Deleting-cell-values/td-p/46957
Mais (1) cela semble être quelque chose qui pourrait être assez courant, donc cela vaut peut-être sa propre fonction intégrée (ou la capacité de scripter la capacité de recodage) et (2) ce n'est pas rapide comme l'éclair sur des données volumineuses, donc si c'est possible, peut-être une ressource supplémentaire méthode sous-jacente efficace pourrait faire partie d'une telle solution.(?)
Si c'est plus rapide, l'abonnement à la table de données est également une option :
dt = open("$SAMPLE_DATA/Big Class.jmp");
r = loc(dt[0, 4]==61)
dt[r, 4] = .;Un élément de la liste de souhaits demandé il y a quelque temps consistait à permettre aux propriétés de colonne d'être affectées à une colonne de groupe de tables définie (une liste de colonnes).
Une alternative assez simple consiste à sélectionner les colonnes nécessitant un "nettoyage". Copiez dans le presse-papiers une propriété de code de valeur manquante, puis envoyez le message JSL Coller les propriétés de plusieurs colonnes au tableau de données. Le script ci-joint montre une méthode matricielle pour remplacer les valeurs sans boucle for, cependant, je trouve le code des valeurs manquantes plus utile : les valeurs de données de la base de données (d'origine) ne sont pas modifiées, plusieurs valeurs peuvent être définies et les valeurs d'origine peuvent être récupéré.
Names Default to Here(1);
//create example table
dt = New Table( "example",
Add Rows( 3 ),
New Column( "A",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "B",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "C",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "x_1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 8] )
),
New Column( "x_2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [8, 8, 8] )
),
New Column( "x_3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 2] )
),
New Column( "x_4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 5] )
),
New Column( "x_5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 3] )
),
New Column( "x_6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 8] )
),
New Column( "E",
Character,
"Nominal",
Set Values( {"", "", ""} )
)
);
// this replaces values
<STRONG>cnme = dt << get column names(numeric);
dt << select Columns(cnme);</STRONG>
mat = dt << get as matrix;
mat[loc(mat==8)]=empty();
dt[1::nrow(dt),cnme]=mat;
//Close dt and rerun the code to create dt
<STRONG>set clipboard("{Add Column Properties(Set Property(\!"Missing Value Codes\!", {8}))}");
dt << Paste Multi Columns Properties;</STRONG>
//The value of 8 appears, but is treated as missing.
//There is a request that column property settings can be assigned to a column group