Salut!
Je travaille actuellement sur un projet utilisant JMP/JSL et sur mes données, je dois supprimer ou effacer les valeurs de plusieurs cellules en fonction d'une condition. Voir des exemples de données brutes et les résultats requis ci-dessous.
Données brutes:
| Test1 | P/F1 | Test2 | P/F2 | Test3 | P/F3 | Test4 | P/F4 | Test5 | P/F5 |
| 1 | P. | 2 | P. | 4 | P. | 9 | F | 3 | P. |
| 5 | P. | 8 | F | 4 | P. | 6 | F | 2 | P. |
| 7 | P. | 1 | P. | 6 | F | 5 | F | 6 | F |
| 4 | P. | 1 | P. | 9 | F | 9 | F | 9 | F |
| 6 | F | 4 | P. | dix | F | dix | F | 8 | F |
Résultat requis :
| Test1 | P/F1 | Test2 | P/F2 | Test3 | P/F3 | Test4 | P/F4 | Test5 | P/F5 |
| 1 | P. | 2 | P. | 4 | P. | 9 | F | * | * |
| 5 | P. | 8 | F | * | * | * | * | * | * |
| 7 | P. | 1 | P. | 6 | F | * | * | * | * |
| 4 | P. | 1 | P. | 9 | F | * | * | * | * |
| 6 | F | * | * | * | * | * | * | * | * |
Ce qu'il faut ici, c'est effacer toutes les cellules suivantes une fois que le 1er F (échec) est déclenché.
Je travaille sur des données volumineuses et je pense que cela ne peut être fait que via des scripts.
J'ai essayé des fonctions de bouclage mais aucune ne fonctionne jusqu'à présent. Je ne sais vraiment pas si cela est possible sur JSL.
Merci d'avance pour votre aide!
Cela a vraiment résolu le problème !!! Gloire!
J'ai également été surpris qu'il fonctionne en moins d'une seconde pour des milliers de cellules.
Merci!!
Voyez si cela fonctionne pour vous.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Test1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [1, 5, 7, 4, 6] )
),
New Column( "P/F 1",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "P", "P", "F"} )
),
New Column( "Test2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 1, 1, 4] )
),
New Column( "P/F 2",
Character( 16 ),
"Nominal",
Set Values( {"P", "F", "P", "P", "P"} )
),
New Column( "Test3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 4, 6, 9, 10] )
),
New Column( "P/F 3",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
),
New Column( "Test4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 6, 5, 9, 10] )
),
New Column( "P/F 4",
Character( 16 ),
"Nominal",
Set Values( {"F", "F", "F", "F", "F"} )
),
New Column( "Test5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [3, 2, 6, 9, 8] )
),
New Column( "P/F 5",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
)
);
bad_rows = [];
for(i=1, i<=ncols(dt), i++,
col = Column(dt, i);
if(col << Get Data Type == "Character", //this is an assumption that your P/F cols are the only char
if(nrows(bad_rows), //check if there's anything to clear
col[bad_rows] = ""; // clear character
);
bad_rows |/= loc(col <<GET values=""></GET>