Comment réaliser le remplacement automatique des lots avec JSL ?Cette table est générée dynamiquement par le processus d'exécution JSL. Comment utiliser l'implémentation automatique JSL pour remplacer la valeur 0 à partir de la colonne 2 de ce tableau par une valeur nulle "" ?
JSL doit être remplacé par une liste de numéros de colonne ou de noms dynamiques.
Soit un remplacement colonne - par - colonne ou un remplacement ponctuel.

Re : Comment obtenir un remplacement automatique des lots avec JSL ?Merci beaucoup!
For( i = 3, i <= N Col( d2 ), i++,
As Column( i )[d2 << get rows where( As Column( i ) == 0 )] = Empty()
);
Re : Comment effectuer un remplacement automatique des lots avec JSL ?La syntaxe :
For( c = 4, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
Column( dt, c )[target row] = .;
);
);
fonctionne déjà dans JMP 14.
Re : Comment obtenir un remplacement automatique des lots avec JSL ?J'ai vraiment hâte d'utiliser JMP 15. Merci beaucoup !Re : Comment effectuer un remplacement automatique des lots avec JSL ?Ce traitement sera encore plus simple et rapide dans JMP 15. Vous pourrez attribuer la valeur manquante à toutes les lignes en un seul appel.
Names Default to Here( 1 );
// assume that data table is open
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Wait( 1 );
// create 5 observations of zero
n = N Row( dt );
For( i = 1, i < 6, i++,
r = Random Integer( 1, n );
:weight[r] = 0;
r = Random Integer( 1, n );
:height[r] = 0;
);
Wait( 1 );
For( c = 4, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
Column( dt, c )[target row] = .;
);
);
Re : Comment obtenir un remplacement automatique des lots avec JSL ?Bien, cela réduit le nombre de lignes à boucler, ce qui permet de gagner du temps sur les grandes tables. Je pensais qu'il pourrait y avoir un moyen d'utiliser la fonctionnalité Recode sur la table dans son ensemble, mais je vois que vous avez ( @Mark_Bailey ) déjà expliqué ailleurs qu'il s'agit d'un éditeur interactif et non d'une fonction JSL.
Re : Comment effectuer un remplacement automatique des lots avec JSL ?Je ne peux pas tester ce script mais il devraient travail.
Names Default to Here( 1 );
// assume that data table is open
dt = Current Data Table();
For( c = 2, c <= N Cols( dt ), c++,
target row = dt << Get Rows Where( Column( dt, c )[] == 0 );
If( N Rows( target row ) > 0,
For( r = 1, r <= N Rows( target row ), r++,
Column( dt, c )[target row[r]] = .;
);
);
);
Re : Comment obtenir un remplacement automatique des lots avec JSL ?Je ne sais pas si c'est la façon la plus efficace de le faire sur le plan informatique - en fait, je suppose que ce n'est pas le cas. Mais si vous avez besoin d'une solution rapide de force brute, cela a fonctionné pour moi dans le passé : bouclez sur les colonnes, puis bouclez sur les lignes à la recherche de la valeur que vous souhaitez remplacer, en définissant la nouvelle valeur au fur et à mesure que vous la trouvez.
dt = current data table();
colnames = dt << Get Column Names(String);
for(c=2,c<=N Items(colnames),c++, // starting at 2 per your note
For Each Row(
If(column(dt,colnames[c])[]==0, // if you find a 0
column(dt,colnames[c])[]=Empty() // make it empty
)
)
);
Re : Comment effectuer un remplacement automatique des lots avec JSL ?J'étais négligent. J'ai utilisé la grammaire de VBA directement et j'ai oublié d'utiliser "Empty()".Re : Comment obtenir un remplacement automatique des lots avec JSL ?Téléchargez un fichier de données, demandez de l'aide aux experts. Merci beaucoup !