누락 된 값만 포함 된 열을 제거하는 스크립트가 있습니까? 데이터 테이블 정리를 통해 방해가 되며이 프로세스를 자동화하는 데 매우 도움이됩니다.
감사,
피트
너무 빨리 말 했어요 행렬 (데이터 테이블)이 조금 커지면 첫 번째 방법이 더 빠릅니다. 100,000 행 x 1000 col 행렬에서 첫 번째 방법은 2.48 초가 걸리고 두 번째 방법은 6.51 초가 걸립니다. 내 생각에 정말 큰 테이블의 경우 첫 번째 방법은 느리고 두 번째 방법은 매우 느릴 것입니다.
건배,
브래디
피트,이 생각이 나중에 ... 내가 제안한 첫 번째 방법보다 훨씬 빠릅니다. 예를 들어, 1000 행 x1000 열 테이블에서 첫 번째 방법은 0.82 초가 걸리고이 방법은 0.017 초가 걸렸습니다.
dt << Delete Columns( Loc( V Max( Is Missing( dt << Get All Columns As Matrix ) ) ) );
@ 아마도 더 나을 것이지만 Numeric 및 Character 열에 All () 및 Loc () 함수를 사용했습니다.
이 같은:
dt=New Table( "untitled 25 2",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"a", "a", "a", "a"} )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., ., ., .] )
),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "", "", ""} ) ),
New Column( "Column 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., 0, 0, 0] )
)
);
For( i = N Cols( dt ), i > 0, i--,
vals = Column( dt, i ) << get values;
show(vals);
If( (Column( dt, i ) << get data type) == "Character",
Show( Loc( vals, "" ) ),
Show( all( vals ) )
);
);
Pete, 당신이 열을 삭제하려면 (게시물이 누락 된 것을 0으로 대체한다고 말하면) 그렇게합니다.
dt = current data table();
For( i = N Col( dt ), i >= 1, i--,
If( Max( Is Missing( dt[0, i] ) ) > 0,
dt << Delete Columns( i )
)
);
고마워 마이크
이 스크립트를 작성하는 방법을 알고 있습니까? 비슷한 해결책을 찾았지만 스크립트에 완전히 포함시키는 방법을 찾지 못했습니다.