시각화가 합리적인지 확인하기 위해 그래프 빌더에서 그룹화(패널) 수를 가져옵니다.그래서 데이터 테이블을 가져오고 그래프를 제안할 수 있는 약간의 JSL을 작성했습니다. 고유 값의 수, 열 데이터 유형 및 열 이름을 확인하여 가장 적합한 그래프를 평가합니다.
내가 겪고 있는 한 가지 문제는 페이지, 그룹 X, 그룹 Y 및/또는 랩을 사용하고 결과 패널에 데이터 포인트가 많지 않을 때입니다. 다음은 Big Class를 사용하는 어리석은 예입니다.그래프의 각 패널에 하나의 점이 포함되어 있기 때문에 이름은 분명히 잘못된 그룹화 변수입니다.

내 코드가 잠재적인 시각화를 선택하면 레이아웃에 데이터가 희박하거나 비어 있는 패널이 대부분 포함되지 않는지 확인하는 가장 좋은 방법은 무엇입니까?
- 내 변수가 어떻게 관련되어 있는지 알고 있으므로 표를 사용하여 테이블을 만들고 숨겨진 데이터 테이블을 만들고 행렬을 만든 다음 행렬의 희소성을 확인할 수 있습니다. 이것은 장황한 것 같습니다.
- 테이블을 생성하지 않는 JSL summarise() 함수(JMP 12)를 사용하여 가능하지 않다고 생각하는 개수가 필요합니다.
- 카운트 매트릭스를 구축하는 우아한 방법이 있습니까?
- 일반적으로 코드는 가장 많은 목록(X, Y 또는 범례)의 각 항목에 대해 세 개의 그래프를 제안하므로 가능하면 테이블 생성을 피하고 싶습니다.
감사,
스티븐
Re: 시각화가 합리적인지 확인하기 위해 그래프 빌더에서 그룹화(패널)에 대한 카운트 가져오기다음을 수행할 수 있는 JMP 추가 기능이 있는 것으로 나타났습니다. 모든 문자 열을 숫자로 변환 . @M_Anderson에게 감사드립니다. 그것을 지적 .
이렇게 하면 summarise()를 사용하기가 정말 쉽습니다.
Re: 시각화가 합리적인지 확인하기 위해 그래프 빌더에서 그룹화(패널)에 대한 카운트 가져오기모든 그룹화 변수가 숫자인 경우 요약을 통해 계산 작업을 빠르게 수행할 수 있으므로 더 빠를 것입니다. 그러나 이는 데이터 및/또는 사용자에게 매우 제한적입니다. 요약 함수 호출을 "Summary" 플랫폼으로 변환하고 숫자 열과 문자 열을 모두 처리할 수 있는 테이블을 만들 수 있습니다. 작동하는지 확인하기 위해 몇 가지 타이밍 테스트를 수행할 수 있습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\car physical data.jmp" );
dtsumm=dt << Summary(private,
Group( :type),
N( :type ),
Freq( "None" ),
Weight( "None" )
);
show(dtsumm:type<<GET values=""></GET>
Re: 시각화가 합리적인지 확인하기 위해 그래프 빌더에서 그룹화(패널)에 대한 카운트 가져오기그 예를 들어 주셔서 감사합니다. 그룹 Y와 그룹 X(잠재적으로 X도 가능)가 모두 문자로 있는 경우 세 개의 for 루프를 중첩해야 합니까? 이것은 데이터 테이블의 크기를 알 수 없기 때문에 JMP를 루프로 묶는 방법이 됩니다(잠재적으로 사용자는 패널 매트릭스 계산이 필요한 30개의 그래프를 요청할 수 있습니다. 처음 30개의 제안만 표시하도록 프로그램을 제한했습니다) .
아마도 이것은 자동차 물리적 데이터를 사용하는 더 나은 예일 것입니다. 제가 3x5 행렬 또는 15개 항목 목록을 원했던 것입니다.

summarise()를 최대한 활용하기 위해 문자 열을 숫자로 가장 잘 코딩하고 있습니까? for 루프보다 빠르고 깔끔합니까?
Re: 시각화가 합리적인지 확인하기 위해 그래프 빌더에서 그룹화(패널)에 대한 카운트 가져오기요약하면 갈 길입니다. 문자 열에 대한 계수는 수행할 수 없지만 계수를 얻을 수 있는 그룹화 값은 가져올 수 있습니다. 아래 스크립트 참조
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Numeric Column
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, bygroup = by( :age ), counts = Count( :age ) );
Show( "Numeric Column", bygroup, counts );
// Character Column
Summarize( dt, bygroup = by( :sex ) );
counts = {};
For( i = 1, i <= N Items( bygroup ), i++,
Insert Into( counts, N Rows( dt << get rows where( :sex == bygroup[i] ) ) )
);
Show( "Character Column", bygroup, counts );