Ottieni righe Dove comando funziona solo su una colonna specificaCiao,
Sto usando il comando "get rows where" per sostituire i valori numerici con una "P" o "N" a seconda che abbiano raggiunto un valore di soglia.
Ecco il codice:
dt = Open ("C: \ test_data.jmp");
trebbia = 12; // L'utente imposta questo valore di soglia
Prova (dt: HOOK [dt << ottieni le righe dove (: Hook> = thresh)] = "P");
Prova (dt: HOOK [dt << get rows where (: Hook == "")] = "N");
Quindi funziona bene e popola la colonna con N e P. Se copio e incollo queste due linee di prova e cambi la designazione della colonna, non funzionerà sulle altre colonne. Se cambio l'ordine dei comandi o cambi l'ordine delle colonne, fa sempre solo la colonna Hook.
Cosa mi manca?
Grazie!
K
Ri: Get Rows Dove comando funziona solo su una colonna specificaPoiché le colonne sono numeriche, il confronto
Try( dt:HOOK[dt << get rows where( :Hook == "" )] = "N" );
non funzionerà. Invece dovresti usare:
Try( dt:HOOK[dt << get rows where( is missing(:Hook))] = "N" );
Ma come altri hanno affermato che l'assegnazione a "N" non funzionerà perché la colonna è numerica.
Ri: Get Rows Dove comando funziona solo su una colonna specificaSì ..... lo farà, tuttavia, non è una buona pratica software farlo. Suggerirei piuttosto che impostare valori su "P" o "N", che modifichi i valori su altri valori numerici e che usi la proprietà column, Etichette valore per modificare i valori numerici che hai specificato, da visualizzare come " P "o" N ". In questo modo puoi continuare a confrontare correttamente con valori numerici come fai con il valore "Thresh", ma il display ti dà quello che vuoi.
Ri: Get Rows Dove comando funziona solo su una colonna specificapenso che @txnelson è giusto.
Rimuovi Try () dai tuoi tentativi in modo da poter vedere gli errori nel registro.
Ecco un esempio dell'errore che si riceve quando si tenta di assegnare un valore di carattere a una colonna numerica.
//:*/
dt=open("$SAMPLE_DATA\Big Class.jmp");
thresh=65;
dt:height[dt << get rows where( :height >= thresh )] = "P";
/*:
Column "height" requires numeric values in access or evaluation of 'Bad Argument'
Ri: Get Rows Dove comando funziona solo su una colonna specificaNon sta cercando di essere contrario, ma quando funziona per quella colonna, converte automaticamente la colonna in carattere dopo l'inserimento di P e N.
Ri: Get Rows Dove comando funziona solo su una colonna specificaSe le tue colonne sono numeriche e continue, l'impostazione dei valori su "P" o "N" non funzionerà. È possibile impostare le celle uguali a un valore numerico, ma non a un valore di carattere.
Ri: Get Rows Dove comando funziona solo su una colonna specificaIn realtà ho considerato anche questo (il mio trouble-shooting non è troppo malandato per un principiante), ma quando ho guardato le informazioni sulle colonne, tutte e tre le colonne sono impostate come "Numeric" e "Continuous".
Ri: Get Rows Dove comando funziona solo su una colonna specificaC'è un problema con le colonne che sono numeriche o di carattere. Tutte le celle in una colonna devono essere di carattere o numerico. Nel tuo codice, stai chiedendo che la colonna Hook sia confrontata con un valore numerico di "Thresh". "Thresh" ha un valore numerico di 12. Quindi si desidera impostare il valore di Hook su un carattere "P" o "N".
Le colonne sono Hook, Rounds e Whip numerici o di carattere?
Ri: Get Rows Dove comando funziona solo su una colonna specificaVorrei che fosse * così * semplice. Il codice aggiuntivo è sotto. C'è qualche tipo di operatore di file che mi manca? Come se fosse necessario chiudere o salvare dopo ogni sostituzione di colonna?
Nomi predefiniti qui ( 1 );
dt = Aperto ( "C: \ test_data.jmp" );
thresh = 12 ; // L'utente imposta questo valore di soglia (definisce le righe nell'output)
Provare (dt: HOOK [dt << ottenere righe dove (: Hook> = thresh)] = "P" );
Provare (dt: HOOK [dt << ottenere righe dove (: Hook == "" )] = "N" );
Provare (dt: ROUNDS [dt << ottenere righe dove (: Rounds = = thresh)] = "P" );
Provare (dt: ROUNDS [dt << ottenere righe dove (: Round == "" )] = "N" );
Provare (dt: WHIP [dt << ottenere righe dove (: Whip> = thresh)] = "P" );
Provare (dt: WHIP [dt << ottenere righe dove (: Frusta == "" )] = "N" );
Ri: Get Rows Dove comando funziona solo su una colonna specificaPuoi mostrarci le linee dopo aver tagliato e incollato e modificato il valore di Hook?
La mia ipotesi è che tu non stia cambiando uno dei 2 posti in entrambe le colonne in cui appare Hook.