Itérer sur plusieurs colonnes et remplacer les cellulesBonjour à tous,
J'essaie de parcourir plusieurs tables et de remplacer toute valeur> 6 sigma par un ".". Vous trouverez ci-dessous ma tentative de parcourir la grande classe et de remplacer les valeurs de poids et de taille supérieures à 1 sigma par un .; cependant, cela ne fonctionne pas comme prévu. Je pense que je me confonds avec les deux cordes.
Names Default To Here( 1 );
Clear Globals();
dt = Open("...\SAS\JMP\13\Samples\Data\Big Class.jmp");
mycol = J( N Rows( dt ), 1 );
list_col_names = dt << Get Column Names( String );
For( i = 1, i <= N Items( list_col_names ), i++,
cur_col = (list_col_names[i]);
If( Left( cur_col,1 ) == "ei",
mycol = dt << get as matrix( cur_col );
q25 = Quantile( 0.25, mycol );
q50 = Quantile( 0.50, mycol );
q75 = Quantile( 0.75, mycol );
mycol1 = ((mycol - q50) / ((q75 - q25) / 1.35));
For( r = 1, r <= N Rows( dt ), r++,
If(
mycol1[r] > 1, mycol1[r] = .,
mycol1[r] < -1, mycol1[r] = .
));
);
);
Merci!
Re : Itérer sur plusieurs colonnes et remplacer les cellulesC'est là que se situait mon problème, ça marche très bien ! Merci de votre aide!
Re : Itérer sur plusieurs colonnes et remplacer les cellulesLes principaux problèmes que je constate sont que vous n'avez pas identifié les colonnes Hauteur et Poids et qu'une fois que vous avez trouvé les lignes au-dessus ou en dessous de 1 sigma, les valeurs n'ont pas été réécrites dans la table de données.
Voici une modification de votre code qui corrige ces problèmes.
Names Default To Here( 1 );
Clear Globals();
dt = Open("$SAMPLE_DATA\Big Class.jmp");
mycol = J( N Rows( dt ), 1 );
list_col_names = dt << Get Column Names( String );
For( i = 4, i <= N Items( list_col_names ), i++,
cur_col = (list_col_names[i]);
If( Contains(cur_col,"ei") > 0,
mycol = dt << get as matrix( cur_col );
q25 = Quantile( 0.25, mycol );
q50 = Quantile( 0.50, mycol );
q75 = Quantile( 0.75, mycol );
mycol1 = ((mycol - q50) / ((q75 - q25) / 1.35));
For( r = 1, r <= N Rows( dt ), r++,
If(
mycol1[r] > 1, column(dt,cur_col)[r] = .,
mycol1[r] < -1, column(dt,cur_col)[r] = .
));
);
);