Wie wähle ich die höchsten drei Zellenwerte in jeder Spalte aus?Für jede Spalte, die ein Wort enthält, sagen Sie "Vorhersage", möchte ich die obersten 3-Zellenwerte entweder größer als 5 oder größer als 4,5 (wenn ich 3 Zahlen über 5 erhalte, möchte ich keine Zahlen über 4,5) in einer Liste extrahieren. Wählen Sie außerdem diejenige aus, die am weitesten von 5 entfernt ist, und verstecken Sie den entsprechenden Zellenwert in seiner Rohtabelle. Zum Beispiel in dieser Beispieltabelle unten:
In Spalte Vorhersage B möchte ich 6,6, 5,3 und 5 speichern. Und blenden Sie die Zelle neben Prediction B Nut in Spalte B aus, dh Zellenwert 65.
Mein Code wählt Spalten aus, die die Zeichenfolge "Vorhersage" enthalten.
dt = Current Data Table();
a = "Prediction";
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ), )
);
Wie kann ich die oberen 3 Zellen größer als 5 oder 4,5 auswählen? Vielen Dank an die JMP-Community, dass Sie so schnell sind.
Re: Top 3 Zellenwerte in jeder Spalte@txnelson Ich könnte das mit Regex machen: match = regex(colstrings, "[{,]\s*([^{,}]*Prediction[^{,}]*)[,}]", "\1");
Re: Top 3 Zellenwerte in jeder SpalteVerwenden Sie die Loc()-Funktion anstelle der Contains()-Funktion, um bestimmte Zeichenfolgen anzugeben.
Re: Top 3 Zellenwerte in jeder SpalteGibt es auch eine Möglichkeit, Spalten wie B und Vorhersage B abzugleichen? Danke
Re: Top 3 Zellenwerte in jeder SpalteOkay, danke für die Hilfe.@txnelson @uday_guntupalli
Re: Top 3 Zellenwerte in jeder SpalteEs gibt keine direkte Möglichkeit, einen Zellenwert zurückzuziehen, nachdem er auf „Fehlend“ gesetzt wurde.Das ist der Grund dafür @dale_lehman schlug vor, neue Spalten zu verwenden und @uday_guntupalli schlägt vor, eine neue Teilmenge der Daten zu erstellen und die Teilmenge dann zu ändern.
Re: Top 3 Zellenwerte in jeder Spalte@amy ,
Sie können Tabellen immer unterteilen, anstatt zu versuchen, einzelne Zellen einzubeziehen.
Re: Top 3 Zellenwerte in jeder Spalte@amy ,
dt = Current Data Table();
SearchTerm = "Prediction";
ColNames = dt << Get Column Names("String");
DesRowsList = {};
for(i = 1, i <= N Cols(dt), i++,
If(Contains(ColNames[i],SearchTerm),
SR = dt << Select Where(As Column(dt,ColNames[i]) > 4.5) << Get Selected Rows;
Insert Into(DesRowsList,SR);
dt << Clear Select;
);
);Dies sollte Ihnen helfen, die Zeilen, die Ihre Bedingung erfüllen, in eine Liste zu bekommen. Von dort sollten Sie in jedem Fall die Top 3 extrahieren können. Um Ihre Frage zu beantworten, ist mir nicht bekannt, nur Zellen auszuschließen
Re: Top 3 Zellenwerte in jeder Spalte@txnelson Nun, nachdem ich den Wert einer Zelle auf fehlenden Wert gesetzt/den Wert einer Zelle ausgeblendet/ausgeschlossen habe, möchte ich einige Modelle in der Datentabelle ausführen und dann entscheiden, ob ich es so behalte oder den Wert wieder in die Zelle einschließe. Ist das möglich?
Re: Top 3 Zellenwerte in jeder SpalteIn JMP "schließen" Sie keine einzelne Zelle aus, sondern setzen den Wert der Zelle auf einen "fehlenden Wert".Das Symbol des fehlenden Werts ist "."
Wenn die Spalte einen Zeichendatentyp hat, setzen Sie den Wert auf ""
Re: Top 3 Zellenwerte in jeder SpalteIch möchte nicht einmal eine ganze Zeile ausschließen. Ich möchte nur Zellen ausschließen. Zum Beispiel möchte ich in der Tabelle, die ich gepostet habe, in der Lage sein, die Zelle in Spalte "B" auszuschließen, die an die Zelle angrenzt, die den Wert 6,6 in Spalte "Vorhersage B" hat. Ich habe immer noch Probleme herauszufinden, wie ich Regex verwenden kann, um solche Zeichenfolgen abzugleichen. Ich habe 2 Listen erstellt, eine mit Spaltennamen, die das Wort "Vorhersage" enthalten, und eine andere, die dies nicht tut. Ich würde mich freuen, wenn Sie mich auch auf Funktionen hinweisen könnten, die Ihrer Meinung nach mit solchen Tabellen am besten funktionieren würden. Ich habe gerade angefangen, mit JSL zu arbeiten, und ich kämpfe immer noch damit. Vielen Dank im Voraus für die Hilfe.@uday_guntupalli
PS: Bedeutet das, dass ich keine einzelne Zelle aus einer Spalte in JSL ausschließen kann?
Re: Top 3 Zellenwerte in jeder Spalte@amy ,
Möchten Sie die gesamte Zeile oder nur die Zeile für diese Spalte ausschließen? Der Grund, warum ich frage, ist, dass ich ziemlich sicher bin, dass Sie die gesamte Zeile ausschließen können, indem Sie Folgendes verwenden:
dt << Exclude ;
Wenn Sie jedoch nur die Zeile in einer Spalte ausschließen möchten, glaube ich nicht, dass dies möglich ist. Warum versuchen Sie also nicht, die Zeilennummern in einer Variablen zu speichern und diese Zeilen dann auszuschließen?
Re: Top 3 Zellenwerte in jeder SpalteDies ist eine Möglichkeit, nach Daten zu suchen, die aus meiner Analyse entfernt werden müssen, also muss ich es auf die gleiche Weise tun. Vielen Dank für all die Hilfe, die ich sehr zu schätzen weiß @dale_lehman
Re: Top 3 Zellenwerte in jeder SpalteIch schreibe nicht viel Skripte, also überlasse ich das jemand anderem, der Ihnen dabei hilft.Ich sage nur, dass ich den Grund, Zeilen nach diesen Operationen ausschließen zu wollen, nicht wirklich verstehe - es scheint besser zu sein, neue Spalten zu erstellen, bei denen diese Zeilen entweder ausgeschlossen oder auf "fehlend" gesetzt sind.Ich würde denken, dass das Skript relativ einfach wäre, und ich mag die Idee nicht, die Originaldaten zu überschreiben (falls Sie dies vorschlagen).
Re: Top 3 Zellenwerte in jeder Spalte@dale_lehman Danke für die Hilfe. Ich habe mein Skript aktualisiert, um den maximalen Wert jeder Spalte auszuwählen, und habe ihn in der Variablen "val" gespeichert. Wissen Sie, wie ich die Zelle mit der maximalen Zahl in der ersten Spalte ausschließen, einige Operationen ausführen und dann die Zelle mit der maximalen Zahl in der zweiten Spalte ausschließen kann und so weiter?
dt = Current Data Table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Col1 = Column( dt, i );
If( Contains( col[i], "Prediction" ),
Show( col[i] );
val = Abs( Col Max( Col1 ) );
Show( val );
MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
);
);
Re: Top 3 Zellenwerte in jeder SpalteIch habe Ihr Beispiel mit einem Versuch angehängt, die Vorhersagen der Spalte B so zu verwenden, wie Sie es angegeben haben.Ich bin mir nicht sicher, ob dies genau das tut, was Sie wollen, aber ich denke, es ist nah dran.
Re: Top 3 Zellenwerte in jeder Spalte@dale_lehman Nun, ich konnte nicht viel darüber finden, wie ich die Spaltenrangfunktion verwenden kann. Ich kann einen Maximalwert herausziehen, aber ich weiß immer noch nicht, wie ich mit den Top 3 weitermachen soll.
Re: Top 3 Zellenwerte in jeder SpalteDie Spaltenrangfunktion (und einige IF-Anweisungen) könnten ausreichen.