사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말여러분 모두에게,
배포 플랫폼을 호출할 필요 없이 사용자에 대한 몇 가지 간단한 빠른 통계를 수행하기 위해 조직의 사용자에게 배포할 스크립트를 작성 중입니다. 스크립트는 현재 가지고 있는 스크린샷과 함께 아래에 있고 문제가 있는 목록이 있습니다. 사용자는 JMP 16.1을 실행하고 저는 JMP Pro 16.0을 실행합니다. 모든 시스템은 Windows 10, 64비트 시스템입니다.
스크립트의 의도된 목적은 숫자 열을 표시하는 것이며(나중에 범주형 열을 다룰 것입니다) 선택한 라디오 버튼에 따라 몇 가지 간단한 통계를 수행하고 Stats라는 열이 있는 동일한 창에 결과를 표시합니다. 계산된 통계 유형 및 해당 계산 결과의 값. 결과 패널 상자는 열 선택 패널 상자에서 적절한 열을 선택한 후 라디오 버튼을 선택하면 업데이트되어야 합니다.
현재 JMP 스크립트(참고로 저는 익숙한 Big Class.jmp 파일에서 테스트하고 있습니다):
Names Default To Here( 1 );
//Clear Symbols();
//the width of the column list box in pixels
lbWidth = 100;
dt = Current Data Table();
//List of statistics to calculate
StatsListA = {"Mean", "Std Dev", "Max", "Min", "Range", "N"};
StatsListB = {"95% quantile", "50% quantile", "5% quantile"};
StatsListC = {};
//Expression to do math
MathA = Expr(
response_col = Column( dt, Eval( Eval Expr( Expr( ycols ) ) ) );
ymean = Col Mean( response_col );
ystdev = Col Std Dev( response_col );
ymin = Col Min( response_col );
ymax = Col Max( response_col );
yrange = ymax - ymin;
yN = Col Number( response_col );
NumResultsA = {ymean, ystdev, ymin, ymax, yrange, yN};
);
//Expresseion for other math
MathB = Expr(
);
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>
이것은 내가 지금까지 가지고있는 것입니다.

다음은 제가 문제를 겪고 있는 목록입니다.
- Radio Box()에 대한 호출은 계산될 통계를 실제로 나열하는 대신 지역 변수 이름 "StatsListA" 등을 나열합니다. 예를 들어, 첫 번째 라디오 버튼 뒤에는 Mean, Std Dev, Max, Min, Range, N과 같은 목록이 있어야 합니다. 이것은 StatsListB 및 StatsListC에도 있어야 합니다(아직 C 목록을 정의하지 않았습니다). JSL 코드의 맨 위에 있는 미리 정의된 목록을 평가하도록 하는 방법을 잘 모르겠습니다. 목록의 항목을 변경하고 매번 Radio Box() 호출을 편집하는 대신 지역 변수 StatsListX를 변경하는 것이 더 쉽기 때문에 모든 항목을 일일이 작성하지 않는 것이 좋습니다.
- 지금은 모든 열을 나열하지 않고 숫자만 나열하는 것을 선호합니다. Col List Box()의 옵션을 All에서 Numeric("" 포함 또는 제외)으로 변경하면 빈 열 목록이 표시됩니다. 해당 옵션이 정의되어 있을 때 숫자 열만 나열해야 할 때 왜 이런 일이 발생하는지 알 수 없습니다.
- 이것은 내가 생각하기에 가장 어려운 것입니다. 이전에 언급했듯이 패널 상자 "결과"의 결과가 왼쪽 "통계"(StatsListX의 통계 및 해당 계산 결과를 나열하는 열)로 업데이트되기를 바랍니다. 오른쪽 열 "값"의 통계. 이것은 라디오 버튼을 클릭할 때마다 업데이트되어야 합니다. 따라서 원래 :height를 보고 있었지만 :weight를 보려면 :weight를 선택한 다음 라디오 버튼 중 하나를 클릭하여 관련 통계 요약을 가져옵니다. 여기에 표시된 Set Function 예제를 따르려고 시도했지만 성공하지 못했습니다(Set Function 호출을 잘 모릅니다).

MathA의 Expr()은 원래 창을 닫고 결과와 함께 새 창을 열어 호출하도록 의도되었지만 JMP 토론에서 더 많은 연구를 수행한 후 기존 창 내에서 필드를 업데이트할 수 있음을 발견했습니다. 이 문제에 접근하는 것을 선호하는 방법입니다. 따라서 코드 맨 위에 있는 원래 코딩이 내가 하려는 작업에 적합한 코드가 아니라는 것을 알고 있습니다.
이에 대한 도움을 주시면 감사하겠습니다.
감사!,
DS
스크립팅Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말이것은 너무 깔끔합니다. 토론해주셔서 감사합니다.
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말안녕 모두,
지속적인 제안 변경에 감사드립니다. 나는 스크립트에 약간의 변경을 가했고 가장 최근에 수정된 버전이 더 좋기 때문에 다른 사람들의 기여에 정말 감사합니다. 업데이트된 스크립트는 이 답장 끝에 게시됩니다. 이 새 스크립트는 문자 데이터 유형에 대한 요약 통계도 제공합니다. 패널 레이아웃도 약간 수정했습니다.
@jthi , 귀하의 제안이 매우 훌륭하여 통합했습니다. 결과 통계에 대한 색상이 지정된 헤더 이름이 마음에 듭니다. 또한, 이와 유사한 @ErraticAttack 코드에 새 열을 선택하거나 새 수치 결과를 선택하면 통계가 업데이트되도록 만들었습니다. Big Class.jmp 데이터 테이블과 같이 많은 수준이 있을 수 있기 때문에 문자 통계 결과가 세로 크기를 변경하도록 허용했습니다. 해당 열 유형으로 변경하면 범주형 통계도 업데이트되지만 문자 열을 선택한 다음 누군가 숫자 통계 옵션을 클릭하면 오류가 발생합니다. 창에서 너비 크기가 계속 변경되지 않도록 너비 제안을 유지했습니다. 죄송합니다 @ErraticAttack , 나는 이 시점에서 새로운 이름 공간을 정의하고 코드를 수정하는 방법에 익숙하지 않습니다. 그것은 매우 유용하고 사물에 접근하는 좋은 방법으로 보입니다. 나는 그것을 올바르게 수행하는 방법을 배워야만 합니다.
나는 이것을 개선하는 방법, 특히 미학에 대한 다른 제안이 있다고 확신합니다. 그렇다면 게시하십시오. 그러나 이 토론에 대한 업데이트가 있음을 알 수 있도록 저를 태그해 주십시오. 제안한 개선 사항에 대해 모두에게 다시 한 번 감사드립니다.
감사!,
DS
아래
//GUI for quickly reporting statistics written by D. Schmidt, ver1.5
//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 = 217;
dt = Current Data Table();
//dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
//List of statistics to calculate
StatsList1 = {"µ", "σ", "Max", "Min", "Range(Δ)", "N"};
StatsList2 = {"Quantiles", "5%", "25%", "50%", "75%", "95%"};
StatsList3 = {"N", "N Missing", "N 0", "Prop 0", "Prop non-0"};
maxStatCount = Max( N Items( StatsList1 ), N Items( StatsList2 ), N Items( StatsList3 ) );
//RadioBox() arguments
rbArg = Eval List( {Concat Items( StatsList1, ", " ), Concat Items( StatsList2, ", " ), Concat Items( StatsList3, ", " )} );
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 ) );
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 )
);
statMiss = Expr(
Col N Missing( tempCol )
);
statZero = Expr(
N Items( Loc( tempCol << get as matrix, 0 ) )
);
statProp0 = Expr( statZero / statN );
statPropn0 = Expr( 1 - statProp0 );
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} );
StatListRes1 = Expr(
Eval List( {statMean, statStd, statMax, statMin, statRange, statN} )
);
StatListRes2 = Expr(
Eval List( {., statQ95, statQ75, statQ50, statQ25, statQ5} )
);
StatListRes3 = Expr(
Eval List( {statN, statMiss, statZero, statProp0, statPropn0} )
);
StatListRes = Expr(
Eval List( {StatListRes1, StatListRes2, StatListRes3} )
);
//User window
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말안녕 @jimloughlin ,
나는 그것이 단지 몇 가지 디버깅 코드라고 생각합니다. @jthi 내가 게시한 원래 코드에 대한 제안된 편집을 제공할 때 을(를) 사용했습니다. 이 스레드에 글을 쓴 다른 사람들의 제안된 편집을 고려하여 업데이트된 것을 게시하고 있습니다. 업데이트된 스크립트를 게시하면 태그하겠습니다. Big Class.jmp 데이터 테이블에서 잘 작동합니다.
감사!,
DS
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말여기에 내 2센트를 쏟아붓는다.스크립트를 논리적으로 분리된 단위 또는 기능으로 최대한 분리하는 것이 가장 좋습니다.이를 위해서는 디스플레이 트리에서 논리를 제거하고 가능한 한 함수 정의를 평면화하는 것이 훨씬 더 좋습니다.
아래의 예제 솔루션에서 모든 기능의 범위가 본인 그리고 각 함수의 첫 번째 줄은 본인 네임스페이스.실제로 내가 한 것은 명시적으로 정의할 필요가 없도록 자동으로 수행하는 메타 프로그래밍 래퍼를 만드는 것입니다. 본인 네임스페이스를 포함하거나 자기 = 네임스페이스( "이름") 행을 각 함수의 첫 번째 인수로 사용합니다.많은 대화형 GUI를 만드는 경우 많은 작업을 절약할 수 있으므로 비슷한 작업을 수행할 수 있습니다.이것은 또한 스크립트를 평가( 평가 Expr( "< 코드>" ) ) 차단하다.
또한 이 경로로 이동하면 직접 호출할 수 있는 Builtin 디스플레이 상자에 대한 래퍼를 생성하는 것이 가장 쉽습니다. 본인 기능이 있고 내부에 너무 많은 보일러 플레이트를 넣을 필요가 없습니다. << 함수 설정() 메시지.
/* quick stats */
self = New Namespace();
self:tool name = "Quick Stats";
Eval( Eval Expr(
self:initialize = Function( {}, // called before the display tree is generated
self = Namespace( Expr( self << Get Name ) );
self:table = Current Data Table();
self:radio inputs = {
"Mean, Std Dev, Max, Min, Range, N",
"Quantiles: 0.05, 0.25, 0.50, 0.75, 0.95",
"N, N Missing, N Zero, Prop 0, Prop non-0"
};
self:stat list = {
{"Mean", "Std Dev", "Max", "Min", "Range", "N"},
{"5%", "25%", "50%", "75%", "95%"},
{"N", "N Missing", "N Zero", "Prop 0", "Prop non-0"}
};
1
);
self:content = Function( {}, // holds the display tree
self = Namespace( Expr( self << Get Name ) );
self:container = H Splitter Box(
V List Box(
H List Box(
Lineup Box( N Col( 1 ), Spacing( 0 ),
Spacer Box( <<SET auto="" stretching=""></SET>self:window << Update Window;
self:finalize();
) );
self << Get Name;
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말statsstart.jcl을 실행하면 다음 오류가 발생합니다.
이름이 확인되지 않음: 'tempCol' 액세스 또는 평가에서 tempCol{1}, tempCol/*###*/
아마도 내가 v13.2.1을 실행하고 있기 때문입니까?
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말스크립트가 대부분 원하는 대로 작동하도록 하면 다음과 같은 몇 가지 시각적 요소를 고려해야 합니다.
- 테이블 크기가 변경되고 창을 약간 "바운스"합니다.
- 사용자가 선택한 열이 없으면 오류가 발생합니다.
- 열려 있는 데이터 테이블이 없으면 스크립트 실행을 중지하고 사용자에게 알릴 수 있습니다.
- 사용자가 Col List Box의 열을 변경하는 경우 Radio Box의 현재 선택으로 통계를 다시 계산하거나 테이블을 비워야 합니다.
몇 가지 아이디어:
- 결과 패널 상자의 경우. 너비 설정을 사용하여 테이블이 가로 크기를 변경하는 것을 방지하고 숨겨진 자리 표시자 문자열 열 상자를 사용하여 미리 정의된 목록 크기를 사용하여 세로 크기 변경을 방지할 수 있습니다.
- 열 패널 상자를 선택합니다. Max Selected(1)를 추가하여 사용자가 여러 열을 선택하지 못하도록 할 수 있습니다.
- 빠른 통계 패널 상자를 선택합니다. 사용자가 열을 선택하지 않은 경우 일종의 "오류 처리"입니다.
일부 수정이 포함된 완전한 스크립트:
더보기...Names Default To Here( 1 );
//Clear Symbols(); //dont like using this
If(N Items(Get Data Table List()) == 0,
Throw("No datatables open. Stopping...");
stop();
);
//the width of the column list box in pixels
lbWidth = 205;
dt = Current Data Table();
//dt = Open("$SAMPLE_DATA/Big Class.jmp");
//List of statistics to calculate
StatsList1 = {"Mean", "Std Dev", "Max", "Min", "Range", "N"};
StatsList2 = {"Quantiles", "5%", "25%", "50%", "75%", "95%"};
StatsList3 = {"N", "N Missing", "N Zero", "Prop 0", "Prop non-0"};
maxStatCount = Max(N Items(StatsList1), N Items(StatsList2), N Items(StatsList3));
//Statistics to Calculate
statMean = Expr( Col Mean( tempCol ) );
statStd = Expr( Col Std Dev( tempCol ) );
statMax = Expr( Col Max( tempCol ) );
statMin = Expr( Col Min( tempCol ) );
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 )
);
statMiss = Expr(
Col N Missing( tempCol )
);
statZero = Expr(
N Items( Loc( tempCol << get as matrix, 0 ) )
);
statProp0 = Expr( statZero / statN );
statPropn0 = Expr( 1 - statProp0 );
//RadioBox() argument
rbArg = Eval List( {Concat Items( StatsList1, ", " ), Concat Items( StatsList2, ", " ), Concat Items( StatsList3, ", " )} );
//List for results
StatList = Eval List( {StatsList1, StatsList2, StatsList3} );
StatListRes1 = Expr(
Eval List( {statMean, statStd, statMax, statMin, statRange, statN} )
);
StatListRes2 = Expr(
Eval List( {., statQ95, statQ75, statQ50, statQ25, statQ5} )
);
StatListRes3 = Expr(
Eval List( {statN, statMiss, statZero, statProp0, statPropn0} )
);
StatListRes = Expr(
Eval List( {StatListRes1, StatListRes2, StatListRes3} )
);
//User window
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말안녕 @jthi 그리고 @ian_jmp ,
두 분 모두 큰 도움을 주셔서 감사합니다! 마지막 두 가지 힌트를 주셔서 감사합니다. @jthi , 연관 배열 알파벳 "문제"를 극복 할 수있었습니다. 나는 AA의 위력을 좋아하고 어디에 유용하게 사용할 수 있는지 알 수 있지만 사용자 때문에 유지하려면 특정 순서가 필요합니다.
나는 목록 제안과 내가 가진 Count Zero 문제에 대한 제안으로 변경할 수있었습니다. 감사! 코드는 예상대로 작동합니다. 이제 범주 열을 수행하기 위해 코드를 확장한 다음 사용자에게 필요한 실제 통계 목록을 확인하기 위해 사용자를 조사해야 합니다.
모든 도움에 다시 한 번 감사드립니다! 작업 코드(적어도 숫자 열의 경우)는 다음과 같습니다.
감사!,
DS
Names Default To Here( 1 );
Clear Symbols();
//the width of the column list box in pixels
lbWidth = 205;
dt = Current Data Table();
//dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
//List of statistics to calculate
StatsList1 = {"Mean", "Std Dev", "Max", "Min", "Range", "N"};
StatsList2 = {"Quantiles", "5%", "25%", "50%", "75%", "95%"};
StatsList3 = {"N", "N Missing", "N Zero", "Prop 0", "Prop non-0"};
//Statistics to Calculate
statMean = Expr( Col Mean( tempCol ) );
statStd = Expr( Col Std Dev( tempCol ) );
statMax = Expr( Col Max( tempCol ) );
statMin = Expr( Col Min( tempCol ) );
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 )
);
statMiss = Expr(
Col N Missing( tempCol )
);
statZero = Expr(
N Items( Loc( tempCol << get as matrix, 0 ) )
);
statProp0 = Expr( statZero / statN );
statPropn0 = Expr( 1 - statProp0 );
//RadioBox() argument
rbArg = Eval List( {Concat Items( StatsList1, ", " ), Concat Items( StatsList2, ", " ), Concat Items( StatsList3, ", " )} );
//List for results
StatList = Eval List( {StatsList1, StatsList2, StatsList3} );
StatListRes1 = Expr(
Eval List( {statMean, statStd, statMax, statMin, statRange, statN} )
);
StatListRes2 = Expr(
Eval List( {., statQ95, statQ75, statQ50, statQ25, statQ5} )
);
StatListRes3 = Expr(
Eval List( {statN, statMiss, statZero, statProp0, statPropn0} )
);
StatListRes = Expr(
Eval List( {StatListRes1, StatListRes2, StatListRes3} )
);
//User window
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말1. 연관 배열을 사용하기 때문에 통계가 재정렬됩니다. 목록을 사용하고 색인을 사용하도록 참조를 수정할 수 있습니다.
2. 0 값을 계산하는 방법을 수정하면 효과가 있을 수 있습니다. 예를 들어 N Items()와 함께 예제 Loc()을 사용할 수 있습니다.
statZero = Expr(N Items(Loc(tempCol << get as matrix, 0)));

Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말안녕 @jthi 그리고 @ian_jmp ,
빠른 피드백 주신 두분 너무 감사합니다! 귀하의 제안은 효과가 있었고 훨씬 더 발전할 수 있었습니다. 이제 매우 간단한 두 가지 문제가 있습니다. 아래에 업데이트된 코드가 포함되어 있습니다. 참고로 :height에서 일부 값을 삭제하고 테스트하기 위해 :height에 일부 0을 추가했습니다.
문제:
- 통계를 나열할 때 알파벳순으로 수행합니다. 목록에 정의한 순서를 유지하고 싶습니다. 가능한가요?
- 먼저 0의 수를 계산하여 0과 0이 아닌 비율을 계산하려고 합니다. 불행히도 제대로 작동하지 않습니다. Expr() 내에 요약을 넣을 수 있지만 연관 배열을 정의할 수 없으며 올바른 후속 계산을 얻을 수 없습니다. 이 작업을 수행하는 더 쉬운 방법이 있다고 확신하지만 JSL에서 0만 계산하는 직접적인 명령을 찾을 수 없습니다. 5개의 누락된 값과 7개의 0 값을 수동으로 입력했습니다. 따라서 prop-non-zero는 0.8이 되어야 하고 prop-zero는 0.2가 되어야 합니다.
Names Default To Here( 1 );
Clear Symbols();
//the width of the column list box in pixels
lbWidth = 205;
dt = Current Data Table();
//dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
//List of statistics to calculate
StatsListA = {"Mean", "Std Dev", "Max", "Min", "Range", "N"};
StatsListB = {"Quantiles", "5%", "25%", "50%", "75%", "95%"};
StatsListC = {"N", "N Missing", "N Zero", "Prop 0", "Prop non-0"};
//RadioBox() argument
rbArg = Eval List( {Concat Items( StatsListA, ", " ), Concat Items( StatsListB, ", " ), Concat Items( StatsListC, ", " )} );
//Statistics to Calculate
statMean = Expr( Col Mean( tempCol ) );
statStd = Expr( Col Std Dev( tempCol ) );
statMax = Expr( Col Max( tempCol ) );
statMin = Expr( Col Min( tempCol ) );
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 )
);
statMiss = Expr(
Col N Missing( tempCol )
);<BR /><BR />//Here's where I'm having trouble with the N Zero and proportions zero and non-zero.
Expr(
Summarize( dt, eg = By( tempCol ), em = Count( tempCol ) )
);
PropTemp1 = Expr(
Associative Array( eg, em )
);
statZero = Expr( PropTemp1["0"] );
statProp0 = Expr( statZero / statN );
statPropn0 = Expr( 1 - statProp0 );
maths = Associative Array();
maths["StatListA"] = Associative Array( StatsListA, {statMean, statStd, statMax, statMin, statRange, statN} );
maths["StatListB"] = Associative Array( StatsListB, {., statQ95, statQ75, statQ50, statQ25, statQ5} );
maths["StatListC"] = Associative Array( StatsListC, {statN, statMiss, statZero, statProp0, statPropn0} );
rbOptions = maths << Get Keys;
//User window
ValueDlg = Expr(
nwin = New Window( "GUI for quick stats",
<<RETURN result=""></RETURN>
지금까지 도움을 주셔서 다시 한 번 감사 드리며 다른 작은 일에도 도움이 되길 바랍니다.
감사!,
DS
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말포인트 1.에 대해, 그리고 의 답변에 약간만 추가하면 @jthi , 넌 할 수있어:
Names Default To Here( 1 );
//the width of the column list box in pixels
lbWidth = 100;
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//List of statistics to calculate
StatsListA = {"Mean", "Std Dev", "Max", "Min", "Range", "N"};
StatsListB = {"95% quantile", "50% quantile", "5% quantile"};
//RadioBox() argument
rbArg = EvalList({ConcatItems(StatsListA, ", "), ConcatItems(StatsListB, ", ")});
//Window
New Window( "GUI for quick stats",
Panel Box( "Select Columns", ColListData = Col List Box( dt, all, <<SET data="https://community.jmp.com/" type=""></SET>
Re: 사용자 선택에 따라 업데이트되는 대화형 창 스크립팅 도움말나는 몇 가지 빠른 테스트를 수행하고 스크립트를 첨부했습니다. 여기에 접근하는 방법에 대한 가능한 아이디어가 있지만 최선의 솔루션은 아닐 수도 있습니다.
1. 연관 배열 및 표현식으로 처리.
2. 이 ColListData = Col List Box(dt, All, <
3. Set Function은 이것을 Evals로 처리합니다.
첨부된 스크립트는 내가 지금 이 문제에 어떻게 접근했는지 가장 잘 알려줄 것입니다.
