Extrahieren der MaximaHallo zusammen, ich habe ein Skript ausgearbeitet, das die Spaltennamen durchläuft und die findet, die ich verwenden möchte. Es findet dann die Zeilennummer und den Wert dieser Zelle. Ich finde jedoch, dass diese Werte für jede Spalte wiederholt werden. Kann mir jemand sagen, wo ich falsch liege?
Hier ist das Skript:
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 />
Re: Extraktion der MaximaIch glaube, dass Ihre von Ihnen bereitgestellte Beispielliste eigentlich als spezifiziert worden sein sollte
a={ [12], [13], [14],[15,16] };
In Ihrem Beispiel wurde die Syntax einer Matrix [] angegeben, nicht einer Liste {}. Als Matrix ist Ihr Beispiel nicht gültig. Deshalb werde ich antworten, indem ich davon aus gehe, dass Sie eine Liste haben.
Die Liste, die Sie anzeigen, enthält mehrere Matrizen. Um die Daten herauszuholen, müssen Sie lediglich die Subskription für die Liste und die Matrix richtig angeben. Wenn Sie beispielsweise die Nummer 13 aus Ihrem Beispiel herausziehen möchten, würden Sie dies angeben
x = a[2][1]
und "x" würde dann den Wert von 13 enthalten. Wenn Sie das 2. Element der 4. Matrix in Ihrer Liste abrufen möchten, [15,16], würden Sie Folgendes angeben:
x = a[4][2]
Um alle 1. Elemente in jeder der Matrizen zu erfassen und in eine einfache Liste zu verschieben, müssen Sie nur die Elemente in Ihrer Liste mit dem Namen "a" durchlaufen und das erste Matrixelement extrahieren
a = {[12], [13], [14], [15, 16]};
aList = {};
For( i = 1, i <= N Items( a ), i++,
Insert Into( aList, a[i][1] )
);
Show( aList );
und das Ergebnis wäre:
aList = {12, 13, 14, 15};
Re: Extraktion der MaximaIch weiß nicht warum, aber ich habe eine Liste, die so aussieht:
a=[ [12], [13], [14],[15,16] ];
Wie kann ich einfach Zahlen extrahieren und sie in numerischer Form in eine Tabelle einfügen? Ist das wie eine Liste innerhalb einer Liste? @uday_guntupalli Wenn ich mehr als einen Wert wie [15,16] in der obigen Liste habe, möchte ich nur, dass einer Datentabelle 15 hinzugefügt wird. Vielen Dank.
Re: Extraktion der MaximaHallo @am .
Welche Daten möchten Sie in der Datentabelle speichern?
In dem von Ihnen bereitgestellten Beispielskript verweist ColNames [i] auf einen bestimmten Wert von ColNames, der eine Liste aller Spaltennamen ist. Können Sie ein Muster dessen liefern, was in diesen Spalten enthalten ist?
Was Sie versuchen und den Weg, auf dem Sie sich befinden, ist richtig. Sie möchten nur sicherstellen, dass die Daten, die Sie an die Spalten übergeben, korrekt sind. Hier ist ein einfaches Beispiel:
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>Re: Extraktion der MaximaWie kann ich alle diese Werte in einer Tabelle speichern? @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))
);Re: Extraktion der MaximaUps, ich habe es .. Ich danke dir sehr @uday_guntupalli
Re: Extraktion der Maxima @am .
Ich denke, das Skript macht das, was Sie herausgeschrieben haben. Der Grund für die wiederholten Werte ist, dass in der Spalte "Vorhersage B" drei Werte vorhanden sind, dh Zeilen, die die von Ihnen angegebene Bedingung erfüllen. Daher wird derselbe Wert wiederholt gedruckt, da Sie den Maximalwert ausgegeben haben und die Position.
Alternativ können Sie es auch so versuchen.
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));
);
);
);