memorizzazione della variabile dal file e utilizzo della funzione max nello scripting jslciao membri,
sono un nuovo utente che ha appena iniziato lo scripting JSL, potresti fornire un suggerimento su come eseguire le seguenti necessità
ho 2 file,
File1 : contiene dati con migliaia di colonne (stringhe) e righe (numeri)
File2: contiene alcuni elenchi di colonne che ho creato manualmente per selezionare la colonna interessata dal file1
la mia necessità è eseguire la funzione max in base all'elenco del file 2 e creare una nuova colonna nel file 1
di seguito è riportato il codice che ho provato e non ha funzionato come previsto.
dt = Apri ("C:/File2.csv")
lista = dt << prendi nome; // list = è fondamentalmente pochi nomi di colonne casuali da file1 = riga 1, riga2, riga10, ecc
dt1 = Apri ("C:/File1.jmp")
Nuova colonna ("lista max",Numeric,Formula (Max (lista)));
Tabella datiScriptingRi: memorizzare la variabile dal file e utilizzare per la funzione max nello scripting jslNon sono sicuro di come siano i tuoi dati, ma ecco un suggerimento. Non è la soluzione più semplice e richiede JMP16+
Names Default To Here(1);
dt = New Table("File2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Format("Best", 12), Set Values({"Column 1", "Column 2"}))
);
dt1 = New Table("File1",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([2, 2, 2])),
New Column("Column 3", Numeric, "Continuous", Format("Best", 12), Set Values([3, 3, 3]))
);
Show(dt << Get Name); // this will get name of the datatable not columns
max_list = Column(dt, "Column 1") << get values;
expr_max = Expr(Max());
For Each({col}, max_list,
Insert Into(expr_max, NameExpr(AsColumn(Column(dt1, col))))
);
Show(NameExpr(expr_max));
Eval(EvalExpr(
dt1 << New Column("MaxList", Numeric, Continuous, Formula(
Expr(NameExpr(expr_max))
));
));
Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute per una buona lettura
Ri: memorizzazione della variabile dal file e utilizzo per la funzione massima nello scripting jslgrazie mille , TXNELSON,
ha funzionato . stava facendo un semplice errore nel non utilizzare il nome della colonna Maxlist nel file2
Ma ho ricevuto un altro errore: lo spazio dei nomi "office1.close:today" non è definito restituisce il valore massimo tra l'argomento o dei valori all'interno della singola matrice dell'argomento della lista
" office1.close:today "è uno dei file2
se apro la colonna maxlist file1 e faccio clic su Modifica formula, l'errore si spegne.
Ri: memorizzazione della variabile dal file e utilizzo per la funzione massima nello scripting jslHo dato una seconda occhiata al tuo ultimo post e credo di avere un nuovo script che si occuperà del complesso problema del nome che hai esposto in quel post.
// The code below this line is the that does the calculations The code above this line would
// not normally be included
Names Default To Here( 1 );
// point to the large data table with lots of rows and columns
dt = Data Table( "Main" );
// If you are opening the table from a folder, this statement would be
// dt = open("the path to the table");
// point to the second data table that contains a list of columns to be summed
dtMax = Data Table( "config" );
// If you are opening the table from a folder, this statement would be
// dtMax = open("the path to the table");
// Just added a short pause so one can see the original tables before changing
// Create the new columns
For( i = 1, i <= N Cols( dtMax ), i++,
sumList = Column( dtMax, i ) << get values;
dt << New Column( Column( dtMax, i ) << get name );
nameList = ":\!"" || sumList[1] || "\!"n";
For( k = 2, k <= N Rows( dtMax ), k++,
Insert Into( nameList, ", :\!"" || sumList[k] || "\!"n" )
);
Column( dt, N Cols( dt ) ) << set formula( Eval( Parse( "max(" || nameList || ")" ) ) );
);Re: memorizzazione di variabili da file e utilizzo della funzione for max nello scripting jsl
grazie per il suggerimento, non ha funzionato come previsto, potrei aver sbagliato qualcosa. per essere più chiaro ho fornito l'aspetto del file e i requisiti
file1 si presenta così (questa è la mia tabella principale dove vorrei trovare i valori massimi da office1,2,4)
| ufficio1 | ufficio2 | ufficio3 | ufficio4 | ufficio 5 |
| 2 | 3 | 0 | 6 | 1 |
| 3 | 2 | 6 | 4 | 4 |
| 2 | 5 | 3 | 2 | 3 |
| 1 | 0 | 2 | 3 | 2 |
| 4 | 1 | 2 | 7 | 1 |
| | | | | |
Output previsto con la nuova colonna Maxlist (valori da office1,2,4)
soluzione semplice: Nuova colonna("MaxList", Numerico, Continuo, Formula(Max(:"office1",:"office2,:"office4")));
| ufficio1 | ufficio2 | ufficio3 | ufficio4 | ufficio 5 | .. | Elenco massimo | | |
| 2 | 3 | 0 | 6 | 1 | | 6 | | |
| 3 | 2 | 6 | 4 | 4 | | 4 | | |
| 2 | 5 | 3 | 2 | 3 | | 5 | | |
| 1 | 0 | 2 | 3 | 2 | | 3 | | |
| 4 | 1 | 2 | 7 | 1 | | 7 | | |
| | | | | | | | | |
poiché il mio maxlist cambia ogni giorno, vorrei usare un altro file2 come parametro di input per il maxlist
file2: elenco dei nomi di colonna forniti come parametro di input ed esecuzione dello script
cerco una soluzione in cui posso dare l'elenco massimo nel file2 ed eseguirlo nel file1
Nuova colonna("MaxList", Numerico, Continuo, Formula(Max( Basato sull'elenco file2 ")));