Löschen von Spalten, die nicht in einer Liste enthalten sindHallo Leute,
Ich habe eine Reihe von Spalten, die ich behalten und dann alle außer dieser Reihe löschen möchte.
Die Anzahl der Spalten, die ich löschen möchte, ist groß.
Gibt es eine einfache Möglichkeit, dies mithilfe eines Skripts zu tun?
Danke.Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindDanke! Ist es möglich, Spalten zu unterteilen, die meinen Kriterien entsprechen?
Ich möchte nur Spalten mit Schlüsselwörtern unterteilen. Und nicht nur die vollständigen Spaltennamen (da ich viele Daten habe).Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindHallo Dave, ich weiß deine Hilfe zu schätzen. Übrigens ein schöner Blog! Ich habe einen sehr großen Datensatz mit >8000 Spalten, und einige Spalten muss ich behalten, andere nicht. Schließlich habe ich für die ersten Spalten, die ich behalten wollte, ein Subset verwendet. Danach lasse ich eine Schleife für den Rest der Tabelle laufen, um Spalten zu behalten, die mit meinen Schlüsselwörtern wie „_M“ übereinstimmen. Dann verbinde ich das Subset mit der Tabelle, die ich behalten hatte, mit den Spaltennamen, die meinen Kriterien entsprechen. Jetzt funktioniert es einwandfrei. Allerdings versuche ich dann erneut, im folgenden Code eine Liste zu verwenden, aber es scheint nicht zu funktionieren. Ist die Verwendung einer Liste hier nicht zulässig? dt = Current Data Table(); // Datentabelle auswählen dt << Set Name( "Raw_Data" ); dt << Subset( Columns( 1 :: 30 ), Rows( all ), Output Table( "Subset" ) ); // Hauptspaltennamen behalten dt << Revert(); //vt-Spalten behalten colList = Data Table( "Raw_Data" ) << Get Column Names( String ); For( i = N Cols( dt ), i >= 1, i--, If( !Contains( colList[i], "_M" ), //Nur Spalten mit "_M"" im Namen behalten dt << Delete Column( Column( colList[i] ) ) ) );Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindEntschuldigung, vielleicht habe ich das falsch verstanden. Der Code entfernt Elemente aus der Liste, nicht aus der Tabelle. Die aktualisierte Liste kann jedoch mit einem Subset-Befehl verwendet werden, um eine Teiltabelle nur mit den Spalten zu erstellen, die Sie interessieren.
Mehr hier: http://www.pega-analytics.co.uk/blog/scripting-table-subsets/
Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sind„Es gibt Millionen Möglichkeiten, Dinge zu erledigen …“ Talking Heads, „What A Day That Was“, 1984
Wenn die Anzahl der zu löschenden Spalten sehr groß ist, ist es möglicherweise effizienter, die Tabelle mit allen Zeilen zu unterteilen und nur die Spalten in der Liste beizubehalten. Dies könnte viel iteratives Löschen ersparen.
Allerdings ist Ihre Bewerbung möglicherweise nicht so einfach.
Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindHallo Dave, vielen Dank für deine schnelle Antwort auf meine Anfrage. Ich habe deinen Beispielcode verwendet, aber die Spalten meiner Liste erscheinen immer noch in meiner Tabelle. Habe ich etwas übersehen? dt = Data Table( "temp" ); all = dt << Get Column Names( string ); vt = {"lot_id", "wf_id", "die_x"}; For( i = 1, i <= N Items( vt ), i++, pos = Contains( all, vt[i] ); If( pos > 0, Remove From( all, pos ) ); );Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindDer folgende Code unterscheidet sich zwar geringfügig, basiert aber auf der gleichen Idee und löscht Spalten, die in einer Liste enthalten sind . Konkret handelt es sich um eine Liste mit Spalten ( alle ), und Elemente werden entfernt, wenn sie in der Liste exkl. enthalten sind.
all = dt << Get Column Names(string);
// assume excl is a list of column names that i want to remove
For (i=1,i<=NItems(excl),i++,
pos = Contains(all,excl[i]);
If (pos>0,
RemoveFrom(all,pos)
)
);
Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindHallo. Ich habe diese Diskussion durchgesehen. Das Thema war sehr hilfreich, aber ich kann die Lösung nicht erkennen. Wurde es wohl gelöscht oder so? Wäre schön, wenn Sie es erneut posten könnten. Danke!Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindDas könnte funktionieren, wenn Sie nur numerische Elemente (L-Werte) haben. Bei Spaltennamen ist das jedoch selten der Fall. Vielleicht könnten Sie durch geschickte Verwendung assoziativer Arrays zwischen Namen und Zahlen wechseln.Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindDanke, das hat funktioniert. Ich wünschte, man könnte zwei Listen verwenden und eine von der anderen subtrahieren/extrahieren.Betreff: Löschen von Spalten, die nicht in einer Liste enthalten sindDurchlaufen Sie alle Spalten, um eine Liste der Spalten zu erstellen, die Sie löschen möchten, indem Sie jede Spalte mit Ihrer Liste der zu behaltenden Spalten vergleichen.
Beispiel