JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JSL을 사용하여 누락된 값을 '0'으로 대체하려면 어떻게 해야 합니까?
'모두 찾기 및 바꾸기'를 사용하여 수동으로 이 작업을 수행할 수 있지만 매일 자동으로 실행되는 코드에 통합해야 합니다.
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법이것은 재생 버튼을 사용하여 스크립팅 창에서 실행할 때 작동하지만 디버거 내에서는 작동하지 않거나 .jsl의 자동 실행으로 시작할 때 작동합니다.
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
라진케이준
JMP13.2.1
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법물론 주의의 말씀에 감사드립니다.나는 확실히 그것에 대해 생각하지 않았다.
누락된 데이터는 귀중한 데이터가 될 수 있으며 때로는 그대로 두는 것이 가장 좋다는 사실을 기억하는 것도 중요합니다!
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법모두 사실입니다.주의 깃발을 꽂을 때가 된 것 같았습니다.우리가 ~할 수 있다 JMP에서 무언가를 한다고 해서 항상 우리가 ~해야 한다 .
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법당신이 말하는 것은 사실이지만 데이터에 대한 가정을 합니다.예를 들어 그의 데이터가 연속적이지 않습니까?때로는 0이 기록되지 않고 대신 누락된 것으로 남습니다.누군가가 0을 거짓으로, 1을 참으로 사용하여 일방통행 분석을 시도한다면 0이 누락된 것으로 표시되면 문제가 발생합니다. 단방향 분석은 JMP에서 누락된 행을 무시하기 때문입니다.그들은 단 하나의 범주로 끝날 것입니다!
0이 누락된 것으로 나타날 수 있는 다른 이유가 있습니다.일반적으로 큰 데이터베이스에 0을 저장하는 것은 공간 낭비입니다.Pokemon Go가 현재 크기 때문에 예를 들어 보겠습니다.하루에 잡은 모든 포켓몬, 라타타 12마리, 피지 6마리를 기록하고 싶을지도 모릅니다.그러나 그날 잡지 못한 다른 148마리의 포켓몬을 0으로 저장하고 싶지는 않습니다.그렇게 했다면 쓸모없는 정보로 데이터베이스를 빠르게 채웠을 것입니다.따라서 데이터를 쿼리하면 주어진 시간에 대부분의 포켓몬이 누락되지만 누락은 = 0입니다.
유사한 상황에서 0b/c의 데이터 변환 문제, 잘못 설계된 쿼리 등에 해당하는 누락된 데이터를 얻을 수 있습니다.
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법이 파티에 늦어서 미안하지만 끼어들어야 할 것 같습니다. 누락된 값을 0(또는 평균 또는 다른 단일 전가 방법)으로 설정하는 것은 심각한 단점이 있습니다.이러한 접근 방식의 대부분은 데이터가 완전히 무작위로 누락되는 이상적인 조건에서도 편향된 매개변수 추정치를 생성합니다.누락된 데이터를 처리하는 훨씬 더 좋은 방법이 있습니다.
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법다른 사람이 대답하지 않았기 때문에 솔루션은 동일합니다. 대신 문자 열을 잡고 적합한 문자(아래의 경우 "N/A")와 동일하게 행을 설정합니다.
=0으로 설정하면 열이 숫자로 변경되고 모든 문자 데이터가 제거되지만 ="0"이면 괜찮습니다.
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법시원한! ... 마지막 2줄에서 clsRej를 clsMat로 바꿔야겠죠?
한편 문자 열에 대한 유사한 솔루션이 있습니까?
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법또 다른 방법...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
등.
논리적 인덱싱은 종종 루프보다 빠릅니다.
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법모두 감사합니다!
건배!
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법단일 루프를 사용하는 또 다른 방법입니다(숫자 열만 해당).
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법이것은 본질적으로 exj의 응답과 동일하지만 조금 더 깔끔합니다.그렇습니다; 그러나 숫자 열에는 변경 사항만 누락됩니다.
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법JSL 함수이기도 하므로 j를 루핑 변수로 사용하지 않을 것입니다.
J(nrows, , <값>)
기능: 동일한 값의 행렬을 만듭니다.
보고: 매트릭스.
인수:
nrows: 행렬의 행 수입니다. 만약에 ncols 지정되지 않음, nrows 로도 사용된다 ncols .
ncols: 행렬의 열 수입니다.
값: 행렬을 채우는 데 사용되는 값입니다. 만약에 값 지정되지 않은 경우 1이 사용됩니다.
Re: JSL을 사용하여 누락된 값을 '0'으로 대체하는 방법안녕,
이것은 책 'Jump into scripting'을 기반으로 합니다. 누락된 값을 모두 z로 바꿉니다.
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
도움이 되었기를 바랍니다.