Estrarre i massimiCiao a tutti, ho lavorato su uno script che girava attorno ai nomi delle colonne e trova quelli che voglio usare. Quindi trova il numero di riga e il valore di quella cella. Tuttavia, trovo che questi valori siano ripetuti per ogni colonna. Qualcuno può indicarmi dove potrei sbagliare?
Ecco la sceneggiatura:
dt = current data table();
col = dt << get column names( string );
nc = N Items( col );
Row = 1;
For( i = 1, i <= nc, i++,
for(r=1, r<=NRow(dt), r++,
Col1 = Column(dt,i);
If( Contains( col[i], "Prediction" ),
If(Column(dt, col[i])[r] > 5 | Column(dt, col[i])[r] > 4.5,
show(col[i]);
val = abs(Col Max( Col1 ));
show(val);
MaxRow = dt << get rows where(as column(Col1)==abs(Col Max( Col1 )));
show(MaxRow);
)
)
)
); <BR /><BR />The log looks like this:<BR /><BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction C";<BR />val = 5;<BR />MaxRow = [1];<BR />
Ri: Estrarre i massimiCredo che la tua lista di esempi che hai fornito dovrebbe in realtà essere stata specificata come
a={ [12], [13], [14],[15,16] };
Il tuo esempio aveva specificato la sintassi di una matrice [], non una lista {}. Come matrice, il tuo esempio non è valido. Quindi risponderò facendo l'ipotesi che quello che hai è una lista.
L'elenco che mostri contiene più matrici. Tutto ciò che si deve fare per ottenere i dati è specificare correttamente l'indice per l'elenco e la matrice. Ad esempio, se si desidera estrarre il numero 13 dell'esempio, specificare
x = a[2][1]
e "x" conterrebbe quindi il valore di 13. Allo stesso modo, se si desidera recuperare il 2 ° elemento della 4a matrice nell'elenco, [15,16] specificare:
x = a[4][2]
Per prendere tutti i 1 elementi in ciascuna delle matrici, e spostarli in una lista semplice, tutto ciò che devi fare è passare in rassegna gli elementi nella tua lista chiamata "a" e per estrarre il primo elemento di matrice
a = {[12], [13], [14], [15, 16]};
aList = {};
For( i = 1, i <= N Items( a ), i++,
Insert Into( aList, a[i][1] )
);
Show( aList );
e il risultato sarebbe:
a lista = {12, 13, 14, 15};
Ri: Estrarre i massimiNon so perché, ma ho una lista che assomiglia a questo:
a=[ [12], [13], [14],[15,16] ];
Come posso semplicemente estrarre numeri e aggiungerli in una tabella in formato numerico? È così, una lista in una lista? @uday_guntupalli Inoltre, se ho più di un valore come [15,16] nell'elenco sopra, vorrei solo 15 per essere aggiunto a una tabella di dati. Grazie.
Ri: Estrarre i massimiCiao @amy ,
Quali dati desideri salvare nella tabella dati?
Nello script di esempio che hai pubblicato, ColNames [i] fa riferimento a un valore specifico di ColNames che è un elenco di tutti i nomi di colonna. Puoi fornire esempi di ciò che è contenuto in queste colonne.
Quello che stai tentando e il percorso su cui ti trovi è corretto. Devi solo assicurarti che i dati che stai trasmettendo alle colonne siano corretti. Qui c'è un semplice esempio:
Names = {"Rick","Tom","Sam"};
Age = [10,20,30];
Weight = [110,130,150];
dt = New Table("Test", Add Rows(N Items(Names)),
New Column("NamesOfStudents",Character,Nominal,<<SET values=""></SET>Ri: Estrarre i massimiCome posso salvare tutti questi valori in una tabella? @uday_guntupalli
dt1 = New Table( "Information",
New Column("ColName", character, nominal, values(ColNames[i])),
New Column("MaxVal", numeric, continuous, values(MaxVal)),
New Column( "Column", character, nominal, values (Col))
);Ri: Estrarre i massimiOops, ho capito Grazie mille @uday_guntupalli
Ri: Estrarre i massimi @amy ,
Penso che la sceneggiatura stia facendo ciò che hai scritturato. Il motivo per cui stai vedendo i valori ripetuti è perché nella colonna "Previsione B" ci sono 3 valori, ovvero le righe che soddisfano la condizione specificata, quindi lo stesso valore viene stampato ripetutamente - poiché è stato chiesto di stampare il valore massimo e la posizione.
In alternativa, puoi provare a farlo in questo modo.
dt = Current Data Table();
// amy's approach
//col = dt << get column names( string );
//nc = N Items( col );
//Row = 1;
//For( i = 1, i <= nc, i++,
// For( r = 1, r <= N Row( dt ), r++,
// Col1 = Column( dt, i );
// If( Contains( col[i], "Prediction" ),
// If( Column( dt, col[i] )[r] > 5 | Column( dt, col[i] )[r] > 4.5,
// Show( col[i] );
// val = Abs( Col Max( Col1 ) );
// Show( val );
// MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
// Show( MaxRow );
//
// )
//
// );
// )
//);
// alternatively
ColNames = dt << get column names( string );
for(i = 1, i <= N Cols(dt), i++,
If( Contains( ColNames[i], "Prediction" ),
Col = Column(dt,i); // get reference to column
MaxVal = Col Max(Col);
ColVals = As List(Col << Get Values);
If(MaxVal > 4.5,
Show(Col);
Show(MaxVal);
Show(Loc(ColVals,MaxVal));
);
);
);