값 목록이 포함된 모든 열을 선택하는 스크립트는 무엇입니까?나는 파헤쳐보고 있는 큰 dt(70,000 열, 문자)를 가지고 있습니다. 대부분의 열에는 다양한 값이 있지만 눈에 띄게 많은 열에는 두 개의 방해 값만 있습니다. 나는 이 모든 열을 식별한 다음 덤프하고 싶습니다.
어떤 충고?
이러한 성가신 열에는 "**건너뛰기**" 또는 "dne"라는 용어만 포함됩니다.
단일 레코드 값이 포함된 모든 열을 이미 버렸습니다.

자동화 및 스크립팅Re: 값 목록이 포함된 모든 열을 선택하는 스크립트는 무엇입니까?다음은 샘플 스크립트입니다.
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 );Re: 값 목록이 포함된 모든 열을 선택하는 스크립트는 무엇입니까?데이터와 필요한 속도에 따라 고유 값 목록을 얻는 방법을 변경하고 싶을 수도 있지만 아래는 한 가지 옵션입니다.
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);