계층적 데이터에서 동적 JSL 트리 상자 생성누군가 Hierarchical Data를 사용하여 동적 중첩 트리 상자를 만드는 방법을 제안할 수 있습니까? 나는 오늘 밤에 두 시간 동안 시도했고 그것은 나를 혼란스럽게합니다 
3단계 깊이의 관계를 설명하기 위해 아래에 더미 데이터가 있습니다. 분명히 얼마나 많은 수준의 '중첩'을 만들어야 하는지 미리 알지 못하기 때문에 이것을 하드 코딩하고 싶지 않습니다. 실제로는 10개 이상의 수준이 될 것입니다.
건배, 트로이
이것이 내가 시작하는 것입니다 (표 첨부)

이것이 내가 생성하려는 것입니다.

해석학스크립팅Re: 계층적 데이터에서 동적 JSL 트리 상자 생성다음은 샘플 테이블을 사용하여 조합한 것으로 원하는 위치에 도달하는 데 도움이 될 수 있습니다.

Names Default To Here( 1 );
dt = Current Data Table();
maxLevels = Col Max( :EMPLEVEL );
dt << select where( :EMPLEVEL == 1 );
dtJoined = dt << subset( columns( :EMP_ID, :FULL_NAME ), selected rows( 1 ) );
For( m = 1, m <= N Cols( dtJoined ), m++,
Column( dtJoined, m ) << set name( Column( dtJoined, m ) << get name || "1" )
);
For( i = 2, i <= maxLevels, i++,
dt << select where( :EMPLEVEL == i );
dtTemp = dt << subset( columns( :EMP_ID, :FULL_NAME, :MGR_ID ), selected rows( 1 ) );
For( m = 1, m <= N Cols( dtTemp ), m++,
Column( dtTemp, m ) << set name( Column( dtTemp, m ) << get name || Char( i ) )
);
Eval(
Substitute(
Expr(
dtTemp2 = dtJoined << Join(
With( dtTemp ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( __emp__ = __mgr__ ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
)
),
Expr( __emp__ ), parse(":EMP_ID" || Char( i - 1 )),
Expr( __mgr__ ), Parse(":MGR_ID" || Char( i ))
)
);
Close( dtTemp, nosave );
Close( dtJoined, nosave );
dtJoined = dtTemp2;
);
theNameList={};
for(i=1,i<=maxLevels,i++,
insert into(theNameList, parse(":FULL_NAME" || char(i)))
);
Tabulate(
Show Control Panel( 0 ),
Add Table(
Row Table( Grouping Columns( eval(theNameList) ) )
)
)Re: 계층적 데이터에서 동적 JSL 트리 상자 생성여기에서 아이디어를 얻을 수 있습니다. 디렉토리 트리: 폴더가 사용하는 공간 탐색 또는 아마도 내가 작업한 파일 인덱서에서 jthi-jmp-tools/file-indexer(github.com) (bin/bin/DirectoryTreeHandler.jsl 참조, 아직 내가 원하는 것만큼 일반적이지 않지만, 잘 될 것입니다.) 완료할 시간이 없었기 때문에 내 코드는 현재 엉망입니다. 리팩토링을 시작합니다.
내 코드에서 (현재) 입력은 다음과 같이 데이터 가능합니다.

현재 최종 결과는 다음과 같습니다.

훨씬 더 깊은 디렉토리를 포함하도록 입력 디렉토리 목록을 수정했는데 문제가 없는 것 같았습니다. 여기 마법의 단어는 재귀 일 수 있다고 생각합니다.

get_directory_roots 함수가 몇 가지 아이디어를 제공할 수 있기를 바랍니다.
편집하다:
JSL 함수 목록 addin은 또한 몇 가지 아이디어를 제공할 수 있습니다. 제 생각에는 1 또는 2개 이상의 수준이 없었던 것 같습니다.
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성내가 이해하는 바에 따르면 이것이 귀하의 요구에 부합한다고 생각합니다.
Names Default to Here( 1 );
dt = Data Table( "DummyTable" );
relations = [=>];
For Each Row( dt,
relations[:FULL_NAME] = Tree Node( :FULL_NAME );
relations[:FULL_NAME] <<SET data="https://community.jmp.com/"></SET>
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성@ErraticAttach
훌륭한 솔루션!
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성피쉬본 다이어그램에는 재정렬을 위한 오른쪽 클릭 메뉴가 있습니다. 그들은 모두 동일한 디스플레이 상자 트리를 사용합니다. 레이블과 유사하게 트리에 다른 컨트롤을 추가할 수 있습니다. 플랫폼은 Analyze->QualityAndProcess->Diagram 아래에 숨겨져 있습니다.
dt = Open("/Z:/DummyTable.csv");
diagram = dt << diagram(parent(MGR_ID),child(EMP_ID),label(FULL_NAME));
// fishbone is the default, change it like this:
(report(diagram)[hierbox(1)])<<CHANGETYPE></CHANGETYPE>
중첩
생선뼈
계층
편집: 다이어그램 플랫폼이 팝업 메뉴를 통해 JMP 15/16에서 닫힌 노드를 다시 열 수 없는 것 같습니다. JMP 14에서는 가능합니다. 문제를 신고했습니다.
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성그래, 난 동의. 매우 우아한 솔루션입니다. 나는 부모/자식 관계를 추적하는 길을 가고 있었고 일이 복잡해지기 시작했습니다.
많은 훌륭한 코드 조각과 답변에 감사드립니다.
- 트로이