Skript zum Auswählen aller Spalten, die eine Werteliste enthalten?Ich habe einen großen dt (70.000 Spalten, Zeichen), den ich durchwühle. Die meisten Spalten haben einen breiten Wertebereich, aber eine beträchtliche Anzahl von ihnen weist nur zwei störende Werte auf. Ich möchte alle diese Spalten identifizieren und sie dann löschen.
Irgendein Rat?
Diese störenden Spalten enthalten NUR die Begriffe „**übersprungen**“ oder „dne“.
Ich habe bereits alle Spalten gelöscht, die einen einzelnen Datensatzwert enthalten.

Automatisierung und SkripterstellungBetreff: Skript zur Auswahl aller Spalten, die eine Werteliste enthalten?Hier ist ein Beispielskript
Names Default To Here( 1 );
// Create a sample data table to be used for illustration
dt = New Table( "Example", add rows( 20 ) );
dt << delete columns( :Column 1 );
For( i = 1, i <= 100, i++,
If( randomuniform( 0, 1 ) > .95,
If( Random Uniform( 0, 1 ) > .5,
dt << New Column( "col" || Char( i ),
character,
values( {"**skipped**"} )
),
dt << New Column( "col" || Char( i ),
character,
values( {"dne"} )
)
),
dt << New Column( "col" || Char( i ),
character,
set each value( Char( Random Uniform( 0, 100 ) ) )
)
)
);
// Below is the simple script that will build a list of columns to be deleted,
// and then delete them
colNames = dt << get column names(string,character);
colsToDelete = {};
For Each( {name}, colnames,
If(
N Rows(
(dt << get rows where(
as Column( name ) == "**skipped**" | As Column( name ) ==
"dne"
))
),
Insert Into( colsToDelete, name )
)
);
dt << delete columns( colsToDelete );Betreff: Skript zur Auswahl aller Spalten, die eine Werteliste enthalten?Abhängig von Ihren Daten und der benötigten Geschwindigkeit möchten Sie möglicherweise ändern, wie Sie die Liste der eindeutigen Werte erhalten. Nachfolgend finden Sie jedoch eine Option
Names Default To Here(1);
dt = New Table("Untitled 4",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"dne", "**skipped**", "**skipped**"})),
New Column("Column 2", Character, "Nominal", Set Values({"dne", "a", "b"})),
New Column("Column 3", Character, "Nominal", Set Values({"**skipped**", "c", "d"})),
New Column("Column 4", Character, "Nominal", Set Values({"dne", "dne", "**skipped**"}))
);
aa_colmask = ["dne" => 1, "**skipped**" => 1]; // we don't need the values, just keys
cols_to_remove = {};
For Each({colname}, dt << Get Column Names("String"),
// depending on how much data you have, you might want to use different unique value techniques
// Summarize, Associative Array and Summary are few options.
// You can also first check if there are exactly 2 unique values, then check those
aa_values = Associative Array(Column(dt, colname)); // I use AA here as it is the easiest option (not fastest!)
aa_values << Remove(aa_colmask);
If(N Items(aa_values) == 0,
Insert Into(cols_to_remove, colname);
);
);
dt << Delete Columns(cols_to_remove);