Zeilen abrufen, wo der Befehl nur für eine bestimmte Spalte funktioniertHallo,
Ich verwende den Befehl "Zeilen holen wo", um numerische Werte durch ein "P" oder "N" zu ersetzen, je nachdem, ob sie einen Schwellenwert erreichen.
Hier ist der Code:
dt = Open ("C: \ test_data.jmp");
Dresch = 12; // Benutzer legt diesen Schwellenwert fest
Versuchen Sie (dt: HOOK [dt << Zeilen bekommen, wobei (: Hook> = Thresh)] = "P");
Versuchen Sie (dt: HOOK [dt << Zeilen bekommen, wobei (: Hook == "")] = "N");
Das funktioniert also gut und füllt die Spalte mit N und P. Wenn ich diese beiden Versuchszeilen kopiere und einfügte und die Spaltenbezeichnung ändere, funktioniert das für die anderen Spalten nicht. Wenn ich die Reihenfolge der Befehle oder die Reihenfolge der Spalten ändere, wird immer noch nur die Hook-Spalte verwendet.
Was vermisse ich?
Vielen Dank!
K
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertDa die Spalten numerisch sind, erfolgt der Vergleich
Try( dt:HOOK[dt << get rows where( :Hook == "" )] = "N" );
wird nicht funktionieren. Sie sollten stattdessen verwenden:
Try( dt:HOOK[dt << get rows where( is missing(:Hook))] = "N" );
Aber wie andere schon gesagt haben, funktioniert die Zuordnung zu "N" nicht, da die Spalte numerisch ist.
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertJa ... es wird das tun, aber es ist keine gute Software-Praxis, dies zu tun. Ich würde vorschlagen, dass Sie die Werte nicht auf "P" oder "N" setzen, sondern die Werte in andere numerische Werte ändern und die Spalteneigenschaft Wertebeschriftung verwenden, um die von Ihnen angegebenen numerischen Werte zu ändern und als " P "oder" N ". Auf diese Weise können Sie weiterhin mit numerischen Werten wie mit dem "Thresh" -Wert richtig vergleichen, aber die Anzeige zeigt Ihnen, was Sie möchten.
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertich denke, dass @txnelson ist richtig.
Entfernen Sie Try () von Ihren Versuchen, damit Sie die Fehler im Protokoll sehen können.
Hier ist ein Beispiel für den Fehler, den Sie erhalten, wenn Sie versuchen, einer numerischen Spalte einen Zeichenwert zuzuweisen.
//:*/
dt=open("$SAMPLE_DATA\Big Class.jmp");
thresh=65;
dt:height[dt << get rows where( :height >= thresh )] = "P";
/*:
Column "height" requires numeric values in access or evaluation of 'Bad Argument'
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertNicht versuchen, im Gegenteil zu sein, aber wenn es für diese eine Cloumn funktioniert, konvertiert es die Spalte automatisch in ein Zeichen, wenn P und N eingefügt werden.
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertWenn Ihre Spalten numerisch und stetig sind, funktionieren die Werte "P" oder "N" nicht. Sie können die Zellen auf einen numerischen Wert setzen, jedoch nicht auf einen Zeichenwert.
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertDas habe ich eigentlich auch in Betracht gezogen (meine Fehlersuche ist für einen Neuling nicht zu schäbig), aber als ich die Spalteninformationen angesehen habe, sind alle drei Spalten auf "Numeric" und "Continuous" gesetzt.
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertEs gibt ein Problem, dass Ihre Spalten entweder numerisch oder zeichenweise sind. Alle Zellen in einer Spalte müssen entweder ein Zeichen oder eine Zahl sein. In Ihrem Code fordern Sie die Spalte Hook auf, mit dem numerischen Wert "Thresh" verglichen zu werden. "Thresh" hat einen numerischen Wert von 12. Sie möchten dann den Wert von Hook entweder auf ein Zeichen "P" oder "N" setzen.
Sind die Spalten Hook, Rounds und Whip numerisch oder zeichen?
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertIch wünschte, es wäre so einfach. Der zusätzliche Code ist unten. Gibt es eine Art Dateioperator, den ich vermisse - so wie Sie nach jeder Spaltenersetzung schließen oder speichern müssen?
Namensvorgabe bis hier ( 1 );
dt = Öffnen ( "C: \ test_data.jmp" );
Dresch = 12 ; // Benutzer legt diesen Schwellenwert fest (definiert Zeilen in der Ausgabe)
Versuchen (dt: HAKEN [dt << reihen wo (: Hook> = Thresh)] = "P" );
Versuchen (dt: HAKEN [dt << reihen wo (: Hook == "" )] = "N" );
Versuchen (dt: ROUNDS [dt << reihen wo (: Runden> = Dresche)] = "P" );
Versuchen (dt: ROUNDS [dt << reihen wo (: Runden == "" )] = "N" );
Versuchen (dt: WHIP [dt << reihen wo (: Peitsche> = Dresche)] = "P" );
Versuchen (dt: WHIP [dt << reihen wo (: Peitsche == "" )] = "N" );
Re: Get Rows Wo der Befehl nur für eine bestimmte Spalte funktioniertKönnen Sie uns die Zeilen anzeigen, nachdem Sie den Hook-Wert ausgeschnitten und eingefügt haben und geändert haben?
Ich vermute, dass Sie nicht eine der beiden Stellen in beiden Spalten ändern, an denen Hook erscheint.