Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenIch habe ein Skript, das die Mindestwerte für jede Studentized-Spalte in einer Tabelle gelb färbt. Ich möchte auch Werte neben diesen Werten in Rohspalten hervorheben. Beispielsweise ist für „Studentized Resid Rest Pulse“ die Zelle neben -2,321144119 in der Spalte „Rest Pulse“, also 44. Wie kann ich das in jsl machen? Können Regex oder Match hilfreich sein? Danke
dt = current data table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Cols = Column(dt,i);
If( Contains( col[i], "Studentized Resid" ),
Min = dt << get rows where(as column(Cols)==(Col Min( Cols )));
Cols << color cells(Yellow, Min);
)
);
Ich suche so etwas:

Betreff: Markieren Sie Zellen basierend auf übereinstimmenden Spaltennamen@Jeff_Perkinson Hallo Jeff, ich habe den Teilstring-Teil bereits ausgearbeitet. Trotzdem danke!!Betreff: Markieren Sie Zellen basierend auf übereinstimmenden Spaltennamen@txnelson Meinst du so etwas?
dt = Current Data Table();
// I changed the name from "col" to colNameList to keep from
// it being confused with the variable "Cols". It isn't
// confusing to JMP, just to me
colNameList = dt << get column names( string );
nc = N Items( colNameLIst );
// Loop across all columns
For( i = 1, i <= nc, i++,
// Create a variable that contains the "column" representation
// of the column name string value
Cols = Column( dt, i );
// If the column name starts with the string "Studentized Resid"
// and if so, then process
// I changed this because your Substr() function below indicates
// that the column with "Studentized Resid" will be at the beginning
If( Left( colNameList[i], 17 ) == "Studentized Resid",
// Find the minimum value for the column
MinValue = Col Min( Cols );
// Find all of the rows that have the minimum value. There
// could be more than one row with the minimum value, but this
// code only uses the first row
MinRows = dt << get rows where( As Column( Cols ) == MinValue );
// Theoretically, there should always be a matching value for this,
// but it is a good way to make sure the code will not fail. Also,
// if you ever want to deal with the posibility of more than one
// row matching the minimum, you would do it using this type of
// code structure
If( N Rows( MinRows ) > 0,
Cols << color cells( Yellow, MinRows ),
//column( Substr( colNameList[i], 19 ) ) << color cells( Yellow, MinRows )
);<BR /> column( Substr( colNameList[i], 19 ) ) << color cells( Yellow, MinRows )
)
);
Ich habe es zur Arbeit geschafft. Vielen Dank für die Anleitung..
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenMöglicherweise verstehe ich Ihr Problem nicht.Wenn Sie die Zellen neben den Mindestwerten für die Spalten einfärben möchten, die „Studentized .....“ enthalten, müssen Sie dies lediglich tun.Sie haben die Liste der Spaltennamen......colNamesList und durchsuchen die Spalten.Wenn Sie eine Spalte finden, die „Studentized…“ enthält, finden Sie den Namen der anderen Spalte, die Sie einfärben möchten, und die Zeile mit dem Mindestwert.Das heißt, Sie kennen auch die Zellen, die an die Zellen angrenzen, die Sie einfärben möchten.....
column( Substr( colNameList[i], 19 ) ) << << color cells( Yellow, MinRows )<BR />
und wenn Sie dies direkt nach der Einfärbung der Spalte „Studentized…“ hinzufügen, wird die entsprechende Zelle eingefärbt
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenIst der Substr() Funktion, was dir fehlt?
resid_colname="Studentized Resid Rest Pulse";
//There are 19 characters in "Studentized Resid "
orig_colname = substr(resid_colname, 19);
show(orig_colname);
/*:
orig_colname = "Rest Pulse";
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden Spaltennamen@txnelson Hallo Jim, es tut mir leid, wenn mir hier etwas fehlt. Ich wollte auch die angrenzenden Rohspalten für jede studentisierte Spalte hervorheben. Ich bin nicht in der Lage, dies zum Laufen zu bringen.
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenHier ist eine einfache Überarbeitung Ihres Skripts.Es funktioniert mit Ihren Beispieldaten und sollte mit so vielen Spalten funktionieren, wie in der Datentabelle vorhanden sind
dt = Current Data Table();
// I changed the name from "col" to colNameList to keep from
// it being confused with the variable "Cols". It isn't
// confusing to JMP, just to me
colNameList = dt << get column names( string );
nc = N Items( colNameLIst );
// Loop across all columns
For( i = 1, i <= nc, i++,
// Create a variable that contains the "column" representation
// of the column name string value
Cols = Column( dt, i );
// If the column name starts with the string "Studentized Resid"
// and if so, then process
// I changed this because your Substr() function below indicates
// that the column with "Studentized Resid" will be at the beginning
If( Left( colNameList[i], 17 ) == "Studentized Resid",
// Find the minimum value for the column
MinValue = Col Min( Cols );
// Find all of the rows that have the minimum value. There
// could be more than one row with the minimum value, but this
// code only uses the first row
MinRows = dt << get rows where( As Column( Cols ) == MinValue );
// Theoretically, there should always be a matching value for this,
// but it is a good way to make sure the code will not fail. Also,
// if you ever want to deal with the posibility of more than one
// row matching the minimum, you would do it using this type of
// code structure
If( N Rows( MinRows ) > 0,
Cols << color cells( Yellow, MinRows )
);
// Output the requested values
Show( Substr( colNameList[i], 19 ), Cols[MinRows[1]] );
);
);
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenIch habe immer noch nicht herausgefunden, wie ich dieses Problem lösen kann. Ich habe mir andere Fragen und den Skriptleitfaden angesehen, um zu meinem neuesten Skript zu gelangen.
Hier ist mein neuestes Skript:
dt = current data table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Cols = Column(dt,i);
If( Contains( col[i], "Studentized Resid" ),
Min = dt << get rows where(as column(Cols)==(Col Min( Cols )));
Cols << color cells(Yellow, Min);
//show(Loc())
MinValue = Col Min(Cols);
ColValue = As List(Cols << Get Values);
show(Loc(ColValue,MinValue));
show(substr(col[i], 19,100));
)
);
Ich würde mich sehr freuen, wenn mir jemand zeigen könnte, wie ich mit der Substring-Methode Spalten abgleichen kann. Vielen Dank im Voraus.
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenDas klingt nach einem vernünftigen Ansatz.
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenAlle Rohspalten, die studentisierte Spalten haben/übereinstimmen, müssen hervorgehoben werden. Ich habe mir den Scriting-Leitfaden angesehen und versucht, mit Regex Match sowie Teilzeichenfolgen zu arbeiten, um Spaltennamen ohne das darin enthaltene „Studentized Resid“ zu extrahieren. Ich führe auch hier eine Liste der Zeilennummern der hervorgehobenen Spalten und hoffe, dass sie dabei hilft, das zu erreichen, was ich will. Jeder bessere Ansatz wird sehr geschätzt.@txnelson
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenWie stellen Sie sich die Eingabe der zu verarbeitenden Spalten vor?
Haben Sie den Scripting Guide gelesen?Das Buch enthält viele Beispiele, die Ihnen Anregungen geben.
Hilfe==>Bücher==>Skripthandbuch
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden Spaltennamen@pmroz Vielen Dank für die Antwort. Ich suche jedoch nach einer dynamischeren Lösung für ein solches Problem, da dies möglicherweise der Fall ist
a) Viele Spalten
b) Andere Spaltennamen in der Zukunft.
Gibt es JMP-Funktionen, die diese Aufgabe erledigen können? Danke
Betreff: Markieren Sie Zellen basierend auf übereinstimmenden SpaltennamenHier ist eine Möglichkeit mit hartcodierten Spaltennamen:
dt = Current Data Table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
If( Contains( col[i], "Studentized Resid" ),
Min = dt << get rows where( As Column( Cols ) == (Col Min( Cols )) );
Cols << color cells( Yellow, Min );
:Rest Pulse << color cells( Yellow, Min );
:Run Pulse << color cells( Yellow, Min );
:Max Pulse << color cells( Yellow, Min );
);
);