Confronto di più colonne JSL con un numero di correzione utilizzando il ciclo for e genera una nuova colonna per l'outputCiao esperti JSL, sono un antipasto di JSL, voglio eseguire il confronto di più colonne, il nome della colonna è Col1, Col2, Col3 ecc. Sto usando un ciclo For per questo confronto (vedi sotto per interi script) e se rientra nella formula (vedi sotto), produrrà 0 o 1. 1. Quello che so è che se inserisco :Col1 nello script :Col1, lo script funziona bene come di seguito. 2. Quello che non so è che se sostituisco :Col1 in Column( dt, i ), lo script non funziona. Ho anche provato a usare, :Name, :"Name", ma nessuno di questi funziona per sostituire :Col1. Qualcuno sa come fare il confronto di più colonne? Esempio delle parti modificate: Funziona bene: New Column(Name, Character, "Nominal", Formula(If( 1 > :Col1 >0, 0,1)) Non funziona: New Column(Name, Character, "Nominal", Formula(If( 1 > :Column( dt, i ) >0, 0,1)) Esempio degli script interi: dt1 = table1; dt = table2; For( i = 1, i < N Col( dt ) + 1, i++, Nome = Colonna( dt, i ) << ottieni nome; If( Contiene( Nome, "ABCD" ), For( j = 1, j <= N Riga( dt1 ), j++, GGG = Colonna(dt1, "GGGer" )[j]; Nuova colonna( Nome, Carattere, "Nominale", Formula( If( 1 > :Col1 > 0, "0", "Fail" ) ) ); ); ) ); );Ri: Confronto di più colonne JSL con un numero di correzione utilizzando for loop e generare una nuova colonna per out//aggiungi tutte le immagini in una tabella riassuntiva
directory = Scegli Directory();
fileNames = File nella directory (directory);
sommario = Nuova tabella("riepilogo", Nuova colonna("nome", carattere), Nuova colonna("righe",numerico));
For( iFile = 1, iFile <= N elementi( nomifile ), iFile++,
nomefile = nomifile[iFile];
If( Termina con( nomefile, ".JPG" ),
// dt = Apri( directory || nomefile);
sommario << addrows( 1 );
sommario: nome = nome file;
//sommario:righe = N righe( dt );
// Chiudi(dt, "nosave");
);
);
Ri: Confronto di più colonne JSL con un numero di correzione utilizzando for loop e generare una nuova colonna per outCiao @Stokes ,
Benvenuto nella comunità JSL. La community dovrebbe essere in grado di aiutarti ad affrontare il tuo problema. Tuttavia, per i tuoi post futuri, posso suggerire una piccola cosa, quando inserisci il codice, gentilmente inserisci utilizzando una delle seguenti opzioni mostrate di seguito. Questo aiuterà a formattare il codice e renderà più facile per gli utenti della comunità comprendere il tuo codice e aiuterà a rispondere alle tue domande.

Ora che l'abbiamo tolto di mezzo, vediamo come affrontare il tuo problema:
Se ho capito bene la tua domanda -
1. Come confrontare le colonne in una tabella di dati con qualsiasi parametro?
2. Perché un riferimento di colonna ( Col = Column(dt,i); ) non sostituisce direttamente il nome di una colonna (:Col1) in una chiamata di funzione?
Cercherò di rispondere a queste domande nel miglior modo possibile, quindi per favore fatemi sapere se non rispondo a nulla nella mia risposta.
Clear Globals(); Clear Log();
// Open Sample Data
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Acquire Column Names
ColNames = dt1 << Get Column Names("String");
// Define a searchword and look for it in column names
DesiredColsPos1 = list();
DesiredColsPos2 = List();
KeyWord1 = "age";
for(i = 1 , i <= N Cols(dt1), i++,
If(Contains(ColNames[i],KeyWord1),
Insert Into(DesiredColsPos1,i);
);
);
// Display Result
Show(DesiredColsPos1);
// Alternatively
for(i = 1 , i <= N Cols(dt1), i++,
Col = Column(dt1,i); // This gets a reference for the column
Show(Col);
ColName = Col << Get Name;
If(Contains(ColName,KeyWord1),
Insert Into(DesiredColsPos2,i);
);
);
// Display Result
Show(DesiredColsPos2);