거의 비공개 범주 열 제거어떤 사람이 나를 도울 수 있습니까?
데이터베이스에서 나는 일정한 비율의 문자가없는 범주 형 열을 제거해야하며 동시에 일정 비율의 정 수치 (100 %는 필요하지 않음)로 숫자 열을 제거하고 싶습니다.
감사. 펠리스
제목 : Re : 거의 빈 범주 컬럼 제거완벽한 감사합니다.
펠리스
제목 : Re : 거의 빈 범주 컬럼 제거네, 어떻게 설정 하느냐에 따라 다릅니다. 첫 번째 검사는 각 열에서 가장 일반적인 값을 찾고 임계 값보다 높거나 낮은지를 결정합니다. 불행히도 누락 된 값은 값이 아니므로 가장 일반적 일 수는 없습니다. 그것이 숫자 열에서 작동하지 않는 이유입니다. 그것은 문자 열 b / c ""에서 작동하지 않습니다. 모두 빈 문자열 값입니다.
희망을 설명하는 데 도움이됩니다.
더 세분화가 필요하면 다른 전략을 사용하여 서로 다른 비율로 여러 루프를 실행하십시오.제목 : Re : 거의 빈 범주 컬럼 제거안녕하세요 msharp 귀하의 회신을 보내 주셔서 감사합니다. 다른 질문을하겠습니다. 변수의 퍼센트는 범주 형 및 숫자 형 모두에서 작동합니까? 그렇다면 누락 및 정체 사례에 대해 두 가지 다른 가치를 가질 수 있습니까?
아마 어리석은 질문에 대한 미안하지만 나는 jsl 언어의 전문가가 아니에요.
펠리스
제목 : Re : 거의 빈 범주 컬럼 제거그냥 전략을 결합하십시오. 같은 것 :
Names Default To Here( 1 );
dt = Current Data Table();
percent = 90;
delcols = {};
numRows = nrows(dt);
for(i=1; maxi=NCols(dt), i<=maxi, i++,
if(nrows(loc(aslist(column(dt,i)<<GETASMATRIX> numRows * percent/100,
insert into(delcols, i);
,
if(Col N Missing(column(dt,i)) > numRows * percent/100,
insert into(delcols, i);
);
);
);
if(nitems(delcols) > 0, dt << delete columns(delcols)); </GETASMATRIX>제목 : Re : 거의 빈 범주 컬럼 제거안녕하세요
아래 두 번째 테이블에서 yor 스크립트를 시도했는데 결과가 여기에 있습니다.
보시다시피 거의 모든 원하는 열을 제거 할 수 있지만 두 번째 열 (col2)은 제거 할 수 없습니다. 어떻게 내가 그것을 제거 할 수 있습니까?
고마워 펠리스


제목 : Re : 거의 빈 범주 컬럼 제거전에 게시 한 방법을 사용할 수 있지만 100 % 미만의 항목에 대해서는 열 모드를 사용할 수 있습니다.
Names Default To Here( 1 );
dt = Current Data Table();
percent = 90;
delcols = {};
numRows = nrows(dt);
for(i=1; maxi=NCols(dt), i<=maxi, i++,
if(nrows(loc(aslist(column(dt,i)<<getasmatrix),mode(column(dt,i)<<getasmatrix))) > numRows * percent/100,
insert into(delcols, i);
);
);
if(nitems(delcols) > 0, dt << delete columns(delcols));
제목 : Re : 거의 빈 범주 컬럼 제거나는 또한 당신이 다음과 같은 것을 찾고 있다고 생각한다.
모든 데이터가 하나의 값일 경우 숫자 열이 삭제됩니다.
Names Default To Here( 1 );
dt = Current Data Table();
delcols = {};
numRows = nrows(dt);
for(i=1; maxi=NCols(dt), i<=maxi, i++,
col = column(dt, i);
try(summarize(dt, max = max(col), min = min(col));
if((max == min) | (ismissing(max)),
insertinto(delcols, i);
)
);
);
if(nitems(delcols) > 0, dt << delete columns(delcols));제목 : Re : 거의 빈 범주 컬럼 제거또 다른 방법은, 나는 약간 더 강력하다고 믿습니다.
Names Default To Here( 1 );
dt = Current Data Table();
percent = 90;
delcols = {};
numRows = nrows(dt);
for(i=1; maxi=NCols(dt), i<=maxi, i++,
col = column(dt, i);
nmissing = col N missing(col);
if(nmissing > numRows * percent/100,
insert into(delcols, i);
);
);
if(nitems(delcols) > 0, dt << delete columns(delcols));
제목 : Re : 거의 빈 범주 컬럼 제거다음은 지정된 비율의 데이터보다 적은 수의 열을 제거하는 빠르고 간단한 스크립트입니다.
Names Default To Here( 1 );
dt = Current Data Table();
percent = 90;
colList = dt << get column names( character, string );
NumRows = N Rows( dt );
For( i = N Items( colList ), i >= 1, i--,
If( Col Number( Column( dt, i ) ) / NumRows * 100 < percent,
dt << delete columns( colList[i] )
)
);