여러분 모두에게,
얼마 전에 작성한 스크립트를 업데이트하고 있습니다. 원본 스크립트/아이디어를 찾을 수 있습니다. 여기 . 원본 스크립트는 사용자가 현재 데이터 테이블의 "열 선택" 패널 상자에 나열된 열을 클릭할 때 일부 기본 통계 정보를 업데이트하기 위한 것이었습니다.
지금 하고 싶은 것은 사용자가 현재 데이터 테이블에서 사용할 수 있는 다른 열을 클릭할 때 업데이트되는 일부 패널 상자를 추가하는 것입니다. 열 내 데이터의 분포를 보여주는 패널 상자를 업데이트하고 싶습니다. 실제로 배포 플랫폼의 결과(가능한 경우)를 표시하고 그래프 작성기 또는 그래프 상자를 생성하는 것이 아닙니다. 다른 하나는 이상값 탐색 플랫폼의 결과를 보여주는 패널 상자입니다. 사용자가 검토할 새 열을 선택할 때 이 두 패널 상자가 모두 업데이트되기를 바랍니다.
"Big Class.jmp" 예제 데이터 파일을 사용하여 보여주고 싶은 작은 목업을 만들었습니다. 맨 끝에 JSL을 포함했습니다.
이것은 사용자 인터페이스의 현재 보기입니다.

이것은 누군가가 관심 있는 열(이 경우 :height)을 클릭할 때 표시되는 방식에 대한 개념입니다.

그런 다음 사용자가 새 열(예: weight)을 클릭하면 디스플레이가 업데이트되고 다음과 같이 표시됩니다.

분포 플랫폼에서 요약 통계는 실제로 필요하지 않지만 박스 플롯과 그 위에 그래프로 표시된 데이터 포인트가 있는 분포와 평균, 중앙값 및 최대 50%와 같은 박스 플롯의 추가 정보가 필요합니다. 데이터 -- 예를 들어 그래프 빌더에서 쉽게 추가할 수 없습니다.
저를 위해 이 문제를 완전히 해결할 필요는 없지만 시작하는 방법에 대한 제안이 있으면 정말 감사하겠습니다. 지금까지 시도한 아이디어가 작동하지 않기 때문입니다. 이것이 가능한지 조차 모르지만, 나는 그것이 가능하기를 바라고 있습니다. 대시 보드로 수행하지 않는 것이 좋습니다.
도움을 주셔서 미리 감사드립니다! 아래는 JSL입니다.
감사해요!,
DS
//GUI for quickly reporting statistics written by D. Schmidt, ver2.0
//Thanks to JMP User community members: jthi, ian_jmp, and ErraticAttach for helpful suggested changes.
Names Default To Here( 1 );
Clear Symbols();
//the width of the column list box in pixels
lbWidth = 200;
dt = Current Data Table();
//dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
//List of statistics to calculate
StatsList1 = {"µ", "σ", "Max", "Min", "Range(Δ)", "N"};
StatsList2 = {"µ", "Median", "Mode", "N"};
StatsList3 = {"Quantiles", "5%", "25%", "50%", "75%", "95%", "Int. Q. Range"};
StatsList4 = {"N", "N Missing", "N 0", "Prop 0", "Prop non-0"};
maxStatCount = Max( N Items( StatsList1 ), N Items( StatsList2 ), N Items( StatsList3 ), N Items( StatsList4 ) );
//RadioBox() arguments
rbArg = Eval List(
{Concat Items( StatsList1, ", " ), Concat Items( StatsList2, ", " ), Concat Items( StatsList3, ", " ), Concat Items( StatsList4, ", " )}
);
rbcArg = {"Select for categorical columns"};
//Statistics to Calculate
statMean = Expr( Col Mean( tempCol ) );
statStd = Expr( Col Std Dev( tempCol ) );
statMax = Expr( Col Max( tempCol ) );
statMin = Expr( Col Min( tempCol ) );
statMed = Expr( Col Median( tempCol ) );
statMode = Expr(
Mode( dt:tempcol << getvalues )
);
statRange = Expr(
Col Max( tempCol ) - Col Min( tempCol )
);
statN = Expr( Col Number( tempCol ) );
statQ95 = Expr(
Col Quantile( tempCol, 0.05 )
);
statQ75 = Expr(
Col Quantile( tempCol, 0.25 )
);
statQ50 = Expr(
Col Quantile( tempCol, 0.5 )
);
statQ25 = Expr(
Col Quantile( tempCol, 0.75 )
);
statQ5 = Expr(
Col Quantile( tempCol, 0.95 )
);
statIntQR = Expr( StatQ25 - StatQ75 );
statMiss = Expr(
Col N Missing( tempCol )
);
statZero = Expr(
N Items( Loc( tempCol << get as matrix, 0 ) )
);
statProp0 = Expr( statZero / statN );
statPropn0 = Expr( 1 - statProp0 );
OrdStats = Expr(
colmodeltype = tempCol << Get Modeling type;
If( colmodeltype == "Ordinal",
orddist = dt << Distribution( Nominal Distribution( Column( tempCol ) ), Invisible );
rpt_orddist = orddist << Report;
ordlvl = rpt_orddist[String Col Box( 1 )] << Get;
ordCount = rpt_orddist[Number Col Box( 1 )] << Get;
ordProb = rpt_orddist[Number Col Box( 2 )] << Get;
OrdSummNMiss = rpt_orddist[List Box( 7 )][2] << Get Text;
OrdSummLvl = rpt_orddist[List Box( 8 )][1] << Get text;
OrdnumNMiss = Num( OrdSummNMiss );
OrdnumLvl = Num( OrdSummLvl );
Orddist << Close Window;
);
Insert Into( Ordlvl, {"N Missing", "N Levels"} );
Insert Into( OrdCount, OrdnumNMiss );
Insert Into( OrdCount, OrdnumLvl );
);
CatStats = Expr(
coltype = tempCol << Get Data type;
If( coltype == "Character",
catdist = dt << Distribution( Nominal Distribution( Column( tempCol ) ), Invisible );
rpt_catdist = catdist << Report;
lvl = rpt_catdist[String Col Box( 1 )] << Get;
Count = rpt_catdist[Number Col Box( 1 )] << Get;
Prob = rpt_catdist[Number Col Box( 2 )] << Get;
SummNMiss = rpt_catdist[List Box( 7 )][2] << Get Text;
SummLvl = rpt_catdist[List Box( 8 )][1] << Get text;
numNMiss = Num( SummNMiss );
numLvl = Num( SummLvl );
catdist << Close Window;
);
Insert Into( lvl, {"N Missing", "N Levels"} );
Insert Into( Count, numNMiss );
Insert Into( Count, numLvl );
);
//List for results
StatList = Eval List( {StatsList1, StatsList2, StatsList3, StatsList4} );
StatListRes1 = Expr(
Eval List( {statMean, statStd, statMax, statMin, statRange, statN} )
);
StatListRes2 = Expr(
Eval List( {statMean, statMed, statMode, statN} )
);
StatListRes3 = Expr(
Eval List( {., statQ95, statQ75, statQ50, statQ25, statQ5, StatIntQR} )
);
StatListRes4 = Expr(
Eval List( {statN, statMiss, statZero, statProp0, statPropn0} )
);
StatListRes = Expr(
Eval List( {StatListRes1, StatListRes2, StatListRes3, StatListRes4} )
);
//Expression to handle the distribution platform
DistExpr = Expr(
Distribution(
Continuous Distribution(
Column( tempCol ),
Quantiles( 0 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Customize Summary Statistics( N Zero( 1 ) )
),
SendToReport( Dispatch( tempCol, "Summary Statistics", OutlineBox, {Close( 1 )} ) )
)
);
//Expression for Outliers
OutlierExpr = Expr(
Explore Outliers( Y( tempCol ), Quantile Range Outliers)
);
//User window
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>