Wie wähle ich Zeilen anhand mehrerer Kriterien aus?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich schreibe ein Skript, um eine Datentabelle zu unterteilen. Nach dem Codierungsbeispiel der Scripting-Guids kann ich nach einem Kriterium auswählen:
für jede Zeile(Selected(Rowstate())=(name=="KATIE"));
Wie kann ich das verallgemeinern, um sowohl KATIE als auch LOUISE auszuwählen?
Das funktioniert nicht:
für jede Zeile(Selected(Rowstate())=(name=="KATIE","LOUISE"));
Wie lautet also die Syntax dafür?
Grüße
Poul
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Danke,
Früher habe ich jedes Kriterium in eine einzelne Tabelle unterteilt und dann alle kombiniert.
Frohes Neues Jahr !Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Wollen Sie das erreichen? Finden Sie alle in der Liste „name_list“ gefundenen Übereinstimmungen und geben Sie sie dann in eine Tabelle mit Teilmengendaten aus.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
name_list = {"Clay", "Alice", "AMY"};
For( i = 1, i <= N Items( name_list ), i++,
i_name = Uppercase( name_list[i] );
dt << select where( :name == i_name, current selection( "extend" ) );
);
dtSub = dt << subset( selected rows( 1 ), selected columns( 0 ) );Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Hallo Frau,
Danke für dein Skript.
Ich frage mich, ob es eine Möglichkeit gibt, Namenslisten dynamisch zu verarbeiten und trotzdem Teilmengen davon zu erstellen
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
name_list={"clay","Alice","AMY", ...};
for(i=1,i<=nitems(name_list),i++,
i_name=name_list[i];
dt<
);
dt<
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Diese Syntax ist möglicherweise etwas lesbarer.Sie können den vertikalen Balken für ODER und das kaufmännische Und für UND verwenden:
dt = offen ( „$sample_data\Big Class.jmp“ ) ;
dt << Wählen Sie wo aus (( enthält ( : Name , "EINE KRAWATTE" ) | enthält ( : Name , „OBER“ ))
& enthält ( : Sex , "F" )) ;
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Fast dort. Das And() muss beide Argumente einschließen; Damit And() wahr ist, müssen beide Argumente wahr sein.
Das sollte funktionieren:
Für jede Reihe ( Ausgewählt ( Zeilenstatus () ) = Und ( Oder ( enthält ( : Name , "EINE KRAWATTE" ) , enthält ( : Name , „OBER“ )) , enthält ( : Sex , "F" ))) ;
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Hallo, diese Antworten waren wirklich hilfreich. Wenn ich nun eine Bedingung für den Wert in einer anderen Spalte hinzufügen möchte, sagen wir, ich wollte name="KATIE" und "ROBERT" (oder noch besser, enthaltend "ATIE") UND sex="F" auswählen. Dann müsste ich die Or-Bedingung mit einer Und-Bedingung kombinieren.
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Für jede Reihe ( Ausgewählt ( Zeilenstatus () ) = Oder ( enthält ( : Name , "EINE KRAWATTE" ) , enthält ( : Name , „OBER“ )) Und (enthält(:sex, „F“ ))) ;
Ich habe so etwas schon gemacht, war aber nicht erfolgreich.
Grüße
Poul
(PS Offensichtlich habe ich Base SAS oft verwendet. Jetzt versuche ich, Auswahlen auf Tabellen auf diese Weise zu implementieren. Danke für die Hilfe.)
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Wenn viele Zeichenfolgen abgeglichen werden müssen, wäre es verlockend, eine Liste zu verwenden, anstatt eine lange OR()-Klausel zu erstellen. Allerdings kann Contain() nicht nach Teilzeichenfolgen in einer Liste (von Zeichenketten) suchen. Dann ist eine Schleife über die Liste erforderlich. Hier ist ein Beispiel:
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Namensliste = { "EINE KRAWATTE" , „ISE“ , „CLY“ , „WWW“ } ;
N = N Artikel ( Namensliste ) ;
Für jede Reihe (
Für ( ich = 1 , ich <= N , ich ++,
Wenn ( ( s_flag = Enthält ( : Name [] , Namensliste [ ich ] )) > 0 ,
Brechen ()
)
) ;
Ausgewählt ( Zeilenstatus () ) = s_flag ;
) ;
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Gleiches Prinzip:
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Für jede Reihe ( Ausgewählt ( Zeilenstatus () ) = Oder ( enthält ( : Name , "EINE KRAWATTE" ) , enthält ( : Name , „ISE“ )) ) ;
// Oder alternativ
dt << Wählen Sie wo aus ( Oder ( enthält ( : Name , "EINE KRAWATTE" ) , enthält ( : Name , „ISE“ )) ) ;
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Aber was ist, wenn ich „Contains“ weiterhin verwenden möchte, um die Zeichenfolgen nur auf einen Teil der Zeichenfolgen abzugleichen? Wie „ATIE“ und „ISE“? Grüße Poul
Betreff: Wie wähle ich Zeilen anhand mehrerer Kriterien aus?Verwenden Sie Or():
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Für jede Reihe ( Ausgewählt ( Zeilenstatus () ) = Oder ( Name == „KATIE“ , Name == „LUISE“ ) ) ;
// Oder alternativ
dt << Wählen Sie wo aus ( Oder ( Name == „KATIE“ , Name == „LUISE“ ) ) ;