다중 데이터 테이블을 위한 스크립트/워크플로안녕하세요 여러분,
저는 JMP, 특히 JSL 스크립팅을 비교적 처음 접했습니다. 현재 열려 있는 모든 데이터 테이블(여러 파일 가져오기를 통해 가져옴)에 기존 스크립트를 적용하는 방법을 찾고 있습니다. 이 주제에 관해 수많은 커뮤니티 스레드를 통해 조사했지만 제대로 작동하는 솔루션을 종합할 수 없었습니다.
좋습니다. 다음과 같이 작동하는 JSL 코드가 있습니다(참고: 해당되는 경우 워크플로에 포함됨).
// Specify the dataset and the suffix to search for in column headers
dt = Current Data Table();
// Define suffix of interest for replacement
targetSuffix = "TimeAbs";
// Get list of column names from the current data table
colNames = dt << Get Column Names( "string" );
// Loop through all column names and check if the target suffix is present
For( i = 1, i <= N Items( colNames ), i++,
If( Contains( colNames[i], targetSuffix ),
// If the target suffix is found, change the column header to "Date"
Column( dt, colNames[i] ) << Set Name( "Date" )
)
);워크플로의 현재 기능은 현재 열려 있는 데이터 테이블의 열 이름을 바꾸는 것입니다. 그러나 이 이름은 파일마다 다를 수 있으므로 고정된 접미사만 검색하기로 결정했습니다.
이제 이 스크립트를 확장하여 현재 열려 있는 여러 데이터 테이블에 적용하고 싶습니다. For 또는 For Each 루프와 테이블 스크립트를 기반으로 유사한 작업에 대한 솔루션을 보았지만 말했듯이 저는 JSL을 처음 접했고 아직 성공하지 못했습니다.
게다가 파일 이름과 열 이름이 매우 다양할 수 있으므로 이는 상당히 일반적이어야 합니다.
최종 목표는 이러한 테이블을 연결하는 것이지만 단일 질문의 범위를 벗어날 수도 있습니다.
어떤 조언이나 아이디어라도 정말 감사드립니다.
고급 통계 모델링자동화 및 스크립팅기본 데이터 분석 및 모델링데이터 접근결과 공유 및 전달Re: 여러 데이터 테이블에 대한 스크립트/워크플로Get Data Table List()를 사용하여 테이블 목록을 가져온 다음 이를 반복할 수 있습니다.
Names Default To Here(1);
targetSuffix = "TimeAbs";
For Each({dt_cur}, Get Data Table List(),
colNames = dt_cur << Get Column Names("String");
For Each({colname}, colnames,
If(Contains(colname, targetSuffix),
Column(dt_cur, colname) << Set Name("Date")
)
);
);
루프 내부를 함수나 표현식으로 변환할 수도 있습니다.
Names Default To Here(1);
change_table_name = function({dt, targetsuffix = "TimeAbs", newname = "Date"}, {Default Local},
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
If(Contains(colname, targetsuffix),
Column(dt, colname) << Set Name(newname)
)
);
);
For Each({dt_cur}, Get Data Table List(),
change_table_name(dt_cur);
);