여러분 안녕하세요,
JMP Pro 16.1.0을 실행 중이며 JSL 도움이 필요합니다.
CSV 파일을 가져와서 생성된 데이터 테이블이 있고 다음과 같은 구조를 가지고 있습니다(실제 열 수는 훨씬 더 크지만 테이블은 이 구조를 유지합니다).

다음과 같은 사양 테이블의 일반적인 형식으로 구조를 올바르게 변경하는 방법을 알아 내려고 노력하고 있습니다.

결국 열 이름은 사양 데이터 테이블에 대한 JMP 형식, 즉 "Column 1"n, "_LSL"n, "_Target"n 및 "_USL"n으로 변경됩니다. 각 행은 해당 값이 있는 사양이 됩니다.
내가 겪고 있는 문제는 프로세스를 자동화하기 위해 JSL로 이 작업을 수행하는 방법입니다. 나는 Split 또는 Stack의 다른 조합을 시도했지만 실제로 내가 원하는 곳으로 이동하지 못했습니다. 적어도 사용 방법은 아닙니다. 나는 이것을 할 수있는 쉬운 방법이 있다고 확신하지만 어떻게 든 놓치고 있습니다.
모든 제안을 환영합니다.
감사!,
DS
안녕 @Jeff_Perkinson ,
빠른 응답에 감사드립니다. 예, 바로 그것이 제가 일하기를 바랐던 것입니다.
@jthi , Jeff의 회신에서 올바른 수의 시리즈로 그룹화하면 열 데이터 구조가 동일하게 유지되는 한 의도한 방식으로 쌓을 수 있고 열이 모두 가질 필요는 없습니다. 동일한 데이터 유형. 제 경우에는 첫 번째 열이 항상 텍스트 열과 세 개의 숫자 열이 뒤따른다는 의미입니다.
도와 주셔서 감사합니다!,
DS
테이블->스택을 사용하는 다중 시리즈 스택입니다.
이 표부터 시작합니다.

그리고 다중 시리즈 스택 옵션과 함께 테이블-> 스택을 사용합니다.

이 테이블을 드립니다.

레이블 열을 삭제하기만 하면 모든 설정이 완료됩니다.
다음은 Enhanced Log에서 가져온 JSL입니다.
// Stack data table
// → Data Table( "untitled 13" )
Data Table( "untitled 11" ) << Stack(
columns(
:c00000 01, :c00000 02, :c00000 03, :c00000 04, :c00000 05, :c00000 06,
:c00000 07, :c00000 08, :c00000 09, :c00000 10, :c00000 11, :c00000 12
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 4 )
);
// Delete columns
Data Table( "untitled 13" ) << Delete Columns(
:Label, :Label 2, :Label 3, :Label 4
);
다중 시리즈 스택을 사용할 때 스택이 이것을 할 수 있어야 한다고 생각합니다. 데이터 유형은 모든 열에 대해 동일해야 합니다(적어도 이 방법에서는)



그런 다음 레이블 열을 제거하십시오. 스택 플랫폼에서 옵션을 변경하면 더 명확해질 수 있지만 여러 시리즈 스택을 사용하지 않았지만 매우 강력합니다. 내가 태그할게 @Jeff_Perkinson 여기에서 나는 그가 그것을 여러 번 사용하는 것을 보았고 나보다 더 나은 설정을 가지고 있을 수 있습니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("Column 1", Character, "Nominal", Set Values({"x1"})),
New Column("Column 2", Character, "Nominal", Set Values({"1"})),
New Column("Column 3", Character, "Nominal", Set Values({"1.1"})),
New Column("Column 4", Character, "Nominal", Set Values({"1.11"})),
New Column("Column 5", Character, "Nominal", Set Values({"x2"})),
New Column("Column 6", Character, "Nominal", Set Values({"2"})),
New Column("Column 7", Character, "Nominal", Set Values({"2.2"})),
New Column("Column 8", Character, "Nominal", Set Values({"2.22"})),
New Column("Column 9", Character, "Nominal", Set Values({"x3"})),
New Column("Column 10", Character, "Nominal", Set Values({"3"})),
New Column("Column 11", Character, "Nominal", Set Values({"3.3"})),
New Column("Column 12", Character, "Nominal", Set Values({"3.33"}))
);
// data types must be same for stack, so you might have to script it
dt_stacked = dt << Stack(
columns(
:Column 1, :Column 2, :Column 3, :Column 4, :Column 5, :Column 6, :Column 7,
:Column 8, :Column 9, :Column 10, :Column 11, :Column 12
),
Source Label Column("Label"),
Stacked Data Column("Data"),
Stack By Row(0),
Number of Series(4),
Contiguous
);
For Each({col_name}, dt_stacked << get column names("String"),
If(Contains(col_name, "Label"),
dt_stacked << Delete Columns(col_name)
);
);