Wählen Sie die Spalten aus, die in der vom Benutzer bereitgestellten Liste enthalten sind<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche herauszufinden, wie ich mithilfe einer benutzerdefinierten Liste die in der Liste enthaltenen Datenspalten auswählen kann.Die vom Benutzer bereitgestellte Liste enthält möglicherweise mehr oder weniger Namen als in der Datentabelle vorhanden.Ich habe zum Beispiel Folgendes versucht, aber es scheint, als ob es nicht funktioniert.Alle Ideen wären willkommen.Danke
dt = open("$SAMPLE_DATA/Big Class.jmp");
// Liste der Datenspaltennamen abrufen
col_list = dt << Spaltennamen abrufen (String);
// Vom Benutzer angegebene Spaltennamen
cc = { Geschlecht, Gewicht, Test, neu, alt };
for( i=1, i<=ncol( cc ), i++,
if(contains( col_list, cc ),
Spalte ( dt, col_list ) << Ausgewählte festlegen ( 1 )
)
);
Betreff: Wählen Sie die Spalten aus, die in der vom Benutzer bereitgestellten Liste enthalten sindMS,
Vielen Dank für Ihre Hilfe dabei.Ich sehe jetzt, dass meine Überlegungen darüber, welche Spalte ich durchlaufen soll, mir einen Teil meines früheren Kummers bereitet hat.Ich ging davon aus, dass ich eine Schleife durchlaufen und die in der Variablenliste der Datentabelle aufgeführten Spalten auswählen würde, nicht die vom Benutzer angegebene Liste.Hier lernt man immer etwas Neues.Danke.
Betreff: Wählen Sie die Spalten aus, die in der vom Benutzer bereitgestellten Liste enthalten sindIch habe mich nicht mit den Details der Ausgabe befasst. Sie durchlaufen cc, dann sollten Sie sich auf cc beziehen statt col_list um das gewünschte Ergebnis zu erzielen.
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
// Liste der Datenspaltennamen abrufen
col_list = dt << Spaltennamen abrufen ( Zeichenfolge ) ;
// Vom Benutzer angegebene Spaltennamen
cc = { Sex , Gewicht , prüfen , neu , alt } ;
Für ( ich = 1 , ich <= N Artikel ( cc ) , ich ++,
Wenn ( Enthält ( col_list , Verkohlen ( cc [ ich ] ) ) ,
Spalte ( dt , Verkohlen ( cc [ ich ] ) ) << Ausgewählte festlegen ( 1 )
)
) ;
//Das funktioniert auch
Für ( ich = 1 , ich <= N Artikel ( cc ) , ich ++,
Wenn ( Enthält ( col_list , Verkohlen ( cc [ ich ] ) ) ,
: ( cc [ ich ]) << Ausgewählte festlegen ( 1 )
)
) ;
Betreff: Wählen Sie die Spalten aus, die in der vom Benutzer bereitgestellten Liste enthalten sindHallo MS,
Danke für die Tipps.Obwohl der von Ihnen bereitgestellte Code ausgeführt wird, werden nicht nur die in der vom Benutzer angegebenen Liste aufgeführten Spalten ausgewählt.Der oben aufgeführte Code wählt beispielsweise die ersten beiden Spalten (Name und Geschlecht) aus, obwohl das Geschlecht nicht in der vom Benutzer angegebenen Liste enthalten ist.Ich dachte, dieses Listenkonstrukt würde darin bestehen, die Spaltennummern in col_list zu finden, die mit denen in cc übereinstimmen, und sie dann auszuwählen.Es scheint, dass die Spalten tatsächlich anhand der Position im CC und nicht anhand des Namens ausgewählt werden.Ist es möglich, die Spalten nach übereinstimmenden Namen und nicht nach Position auszuwählen?
Betreff: Wählen Sie die Spalten aus, die in der vom Benutzer bereitgestellten Liste enthalten sindFast dort. Verwenden Sie N Items() anstelle von ncol() für Listen. Und um zwei Elemente abzugleichen, müssen beide denselben Datentyp haben. Geben Sie also entweder die vom Benutzer bereitgestellte Liste als Liste von Zeichenfolgen an oder verwenden Sie Char() wie unten.
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
// Liste der Datenspaltennamen abrufen
col_list = dt << Spaltennamen abrufen ( Zeichenfolge ) ;
// Vom Benutzer angegebene Spaltennamen
cc = { Sex , Gewicht , prüfen , neu , alt } ;
Für ( ich = 1 , ich <= N Artikel ( cc ) , ich ++,
Wenn ( Enthält ( col_list , Verkohlen ( cc [ ich ] ) ) ,
Spalte ( dt , col_list [ ich ] ) << Ausgewählte festlegen ( 1 )
)
) ;