Mantieni le colonne corrispondenti a un elenco, rimuovi il restoCiao -
Vorrei rimuovere le colonne (in base ai nomi delle colonne) da una tabella di dati che lo fanno non abbinare un elenco. Finora ho seguito il codice JSL ma non funziona.
Ingresso apprezzato.
Names Default To Here( 1 );
bigClass = Open( "$SAMPLE_DATA/Big Class.JMP" );
dt = Current Data Table();
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names( String );
For(j = 1, j <= N Items( col_of_interest ), j++,
For( i = N Items( col_names ), i > 0, i--,
if ( not( col_names[i] == col_of_interest[j],
Remove From( col_names, i ))
);
);
);
dtNew = dt << subset( all rows, columns( col_names ) ); Wait( 0 );
ScriptingfinestreRe: mantenere le colonne corrispondenti a un elenco, rimuovere il restoVorrei eseguire il ciclo su tutte le colonne nella tabella dei dati e rimuoverle quando necessario (se vuoi mantenere la tua idea, posso anche aiutarti a eseguire il debug):
Names Default To Here(1);
bigClass = Open("$SAMPLE_DATA/Big Class.JMP");
dt = Current Data Table();
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names(String);
For(i = 1, i <= N Items(col_names), i++,
If(!Contains(col_of_interest, col_names[i]),
dt << Delete Columns(col_names[i]);
);
);
Wait(0);Inoltre, suggerirei di non utilizzare J come nome della variabile, poiché JMP ha una funzione di matrice J().
Modificare:
Inoltre, non è necessario utilizzare Current Data Table() (e non dovresti) perché hai già il riferimento dopo aver aperto la tabella. Anche qui è il mio metodo preferito per rimuovere le colonne (usando l'array associativo per ottenere solo le colonne extra e rimuoverle):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.JMP");
col_of_interest = {"name", "age", "weight"};
//get columns which are "extra"
col_names_aa = Associative Array(dt << Get Column Names(String));
col_names_aa << Remove(Associative Array(col_of_interest));
col_names_to_remove = col_names_aa << get keys;
Show(col_names_to_remove);
dt << Delete Columns(col_names_to_remove);Re: mantenere le colonne corrispondenti a un elenco, rimuovere il restoQuando si confrontano due elenchi, trovo più facile creare un terzo elenco per contenere i risultati mentre si lavora sui cicli e quindi utilizzare il terzo elenco per agire quando tutto il ciclo è completo.Il codice seguente potrebbe realizzare ciò che stai tentando.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names( String );
col_list = {};
For( i = N Items( col_names ), i > 0, i--,
if(contains(col_of_interest, col_names[i]),
insert into(col_list, col_names[i])
);
);
dtNew = dt << subset( all rows, columns( col_list ) );
Wait( 0 );
Re: mantenere le colonne corrispondenti a un elenco, rimuovere il restoGrazie per l'input e il suggerimento sulla funzione matrice J, jthi. Fammi riprovare.