Wert auf ausgewählte Zellen setzenHallo,
Ich versuche, bestimmte Zellen in der Datentabelle auszuwählen und ihnen den Wert 2 zuzuweisen, aber es funktioniert nicht. Kann jemand mein Skript überprüfen, um zu sehen, was daran falsch ist?
sdt << selectwhere(
:Informat( "06/26/2018 16:49:00", "m/d/y h:m:s" ) <= :Time <= :Informat(
"06/26/2018 16:54:00",
"m/d/y h:m:s"
)
);
selRows = sdt << getselectedRows;
As Column( sdt, "Status" )[selRows] = "2";
Betreff: Wert auf ausgewählte Zellen setzenEs funktioniert, Danke!
Betreff: Wert auf ausgewählte Zellen setzenDer Wenn Die Funktion stellt sicher, dass Sie nur versuchen, Einstellungen vorzunehmen Status Werte auf 2, wenn es Übereinstimmungen gab.
Ich bin mir über den Unterschied zwischen nicht sicher Spalte Und Als Spalte .Im Allgemeinen verwende ich einfach Spalte .Wenn das nicht funktioniert, versuche ich es Als Spalte . 

Betreff: Wert auf ausgewählte Zellen setzenWas ist der Unterschied zwischen der if-Funktion hier:
if <SPAN class="token punctuation">(</SPAN>nrows<SPAN class="token punctuation">(</SPAN>selrows<SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN> sdt<SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Status"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">[</SPAN>selRows<SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">=</SPAN> <SPAN class="token string">"2"</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Was ist außerdem der Unterschied zwischen „ascolumn“ und „column“?
Versuchen Sie einfach, das Drehbuch zu verstehen
Betreff: Wert auf ausgewählte Zellen setzenEntfernen Sie zunächst den Doppelpunkt vor Informat().Das sagt JMP, dass Informat ein Spaltenname ist.Beginnen Sie damit, diese Doppelpunkte herauszunehmen.Sie können Ihr Skript auch folgendermaßen vereinfachen:
sel rows = sdt << Get Rows Where(Informat("06/26/2018 16:49:00", "m/d/y h:m:s") <= :Time <= Informat("06/26/2018 16:54:00", "m/d/y h:m:s"));
sdt:Status[selRows]="2";Sie müssen außerdem überprüfen, ob Status eine Zeichenspalte ist.Wenn es numerisch ist (auch wenn der Modellierungstyp nominal oder ordinal ist), müssen Sie die Anführungszeichen um „2“ entfernen.
Betreff: Wert auf ausgewählte Zellen setzenWenn du benutzt Holen Sie sich Zeilen wo Sie können sicherstellen, dass Zeilen geändert werden müssen.Wie bereits erwähnt, entfernen Sie den führenden Doppelpunkt aus Informat.Ändern Als Spalte Zu Spalte .
selrows = sdt << get rows where(
Informat( "06/26/2018 16:49:00", "m/d/y h:m:s" ) <= :Time <= :Informat(
"06/26/2018 16:54:00",
"m/d/y h:m:s"
)
);
if (nrows(selrows) > 0,
Column( sdt, "Status" )[selRows] = "2";
);
Betreff: Wert auf ausgewählte Zellen setzenIch habe keine Daten, auf denen ich Ihr Skript ausführen könnte, aber ich habe es für meine Daten geändert und es hat gut funktioniert (aber ich habe die Funktion informat() nicht verwendet).Dann ist mir aufgefallen, dass Sie vor informat() einen Doppelpunkt „:“ haben und der JSL-Editor die Hovertext-Hilfe für „informat“ mit dem Doppelpunkt nicht anzeigt, aber er zeigt sie an, wenn ich diese Doppelpunkte entferne. Versuchen Sie, die beiden Doppelpunkte vor informat() zu entfernen, und prüfen Sie, ob das hilft. Der Doppelpunkt wird verwendet, um eine Spaltenvariable zu definieren. mit Syntax „:name“ erzwingt Name als Datentabellenspalte ausgewertet werden soll.(Bearbeitet, um eine genauere Beschreibung zu geben, von der JMP-Website)
Übrigens, danke für den Tipp zur dortigen Logikstruktur. Ich hatte keine Ahnung, dass ich ax < y < z auf einen Schlag erledigen könnte. Normalerweise ist es x < y und y < z.