예시에서 총 8개 세트(Aa, Ab, Ba, Bb...)에 대해 CD 대 깊이 플롯을 표시합니다. 각 테스트 A~D에는 2개의 다른 '위치' a와 b가 있습니다.
2개의 세트를 구체적으로 선택하여 델타 플롯을 만들고 싶습니다. 예를 들어, Aa와 Ba를 선택하면 각 깊이에서 CD 값이 빼지고 CD 대 깊이 플롯이 생성되어야 합니다.
JMP에서 할 수 있는 일인가요? xlookup 함수를 사용하여 엑셀에서 이 작업을 시도했지만 데이터 양이 방대해서(30000+ 행) 너무 느립니다. JMP에서 할 수 있는 일인지 잘 모르겠습니다.
예제 데이터 세트

CD 대 깊이 플롯 예시;

스크립팅을 사용하면 확실히 가능하고, 적어도 워크플로우로는 스크립팅 없이도 가능할 수 있습니다. 예시 데이터 세트를 제공하고 동시에 두 쌍만 선택할 수 있나요? 또한 선택된 테스트의 위치가 항상 동일합니까?
물론입니다. 여기에 예제 데이터 파일이 있습니다.
두 쌍 사이의 델타 값을 구하고 싶으므로 비교를 위해 항상 2개를 선택합니다.
위치가 같지 않을 수도 있습니다. 실제 데이터 세트에는 위치가 더 많은 샘플이 있습니다. 또한 샘플과 샘플, 위치와 위치를 비교해야 합니다. 예를 들어, 샘플 Aa와 샘플 Cb
여기에 있습니다
사용자 선택 후 새 데이터 테이블이 생성되어도 괜찮나요? 제 기본적인 생각은 스크립팅과 관련이 있을 겁니다.
- 데이터에 주문 열 추가
- 사용자가 목록 상자에서 비교할 조합을 선택할 수 있는 UI를 만듭니다.
- 사용자가 확인을 누르면 해당 두 조합에 대한 데이터가 포함된 새 테이블이 생성됩니다.
- 차이가 계산됩니다
- 데이터를 시각화하다
제 생각에 다른 옵션은 데이터를 분할하고 모든 차이를 열로 미리 계산하는 것입니다. 그런 다음 그래프 빌더에서 Column Switcher를 사용하여 비교할 항목을 변경할 수 있습니다.
비교를 위해 조건을 빠르게 변경할 수 있는지 알아보고 싶었습니다. 그렇게 간단하지 않은 것 같습니다.
데이터 세트가 너무 많기 때문에 모든 차이점을 계산하는 것은 효과적이지 않을 것 같습니다.
도와주셔서 감사합니다. 좀 더 생각해 보겠습니다.
스크립팅 옵션만 떠오릅니다(분할을 제외하고). 저는 JMP 테이블이 스프레드시트보다는 데이터베이스 테이블에 더 가깝다고 생각하기 때문에 계산은 (보통) 행 수준에서 집계로 이루어집니다. 각 "쌍"에 대한 테스트 카운트가 항상 동일하다면 몇 가지 수식 열과 글로벌 데이터 필터를 사용하여 선택 옵션을 더 쉽게 만들 수 있습니다.
스크립팅을 사용하면 이와 같은 것을 만들 수 있습니다(여기에는 일부 정상성 검사가 없습니다)
Names Default To Here(1);
dt = Current Data Table();
dt << New Column("Group", Character, Nominal, Formula(
"Test: " || :Test || " Location: " || :Location
));
Summarize(dt, groups = By(:Group));
dt_temp = New Table("TEMPTABLE",
Add Rows(5), // same as your group size
Compress File When Saved(1),
New Column("Depth",
Numeric,
"Continuous",
Values([0, 20, 40, 60, 80])
),
New Column("CD First",
Numeric,
"Continuous"
),
New Column("CD Second",
Numeric,
"Continuous"
),
New Column("CD diff",
Numeric,
"Continuous"
),
Invisible
);
update_expr = Expr(
Try(
first_group = (lb_first << get selected)[1];
second_group = (lb_second << get selected)[1];
first_cd = dt[dt << Get Rows Where(:Group == first_group), "CD (nm)"];
second_cd = dt[dt << Get Rows Where(:Group == second_group), "CD (nm)"];
dt_temp[0, "CD First"] = first_cd;
dt_temp[0, "CD Second"] = second_cd;
dt_temp[0, "CD Diff"] = Abs(second_cd - first_cd);
,
dt_temp[0, "CD First"] = [., . ,., ., .];
dt_temp[0, "CD Second"] = [., . ,., ., .];
dt_temp[0, "CD Diff"] = [., . ,., ., .];
);
);
nw = New Window("Demo",
H List Box(
Panel Box("Pick First Group",
lb_first = List Box(groups)
),
Panel Box("Pick Second Group",
lb_second = List Box(groups)
),
Data Table Box(dt_temp),
gb = dt_temp << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:CD diff), Y(:Depth)),
Elements(Points(X, Y, Legend(11)), Line(X, Y, Legend(13)))
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("Cancel")
)
)
)
);
lb_first << Set Max Selected(1);
lb_second << Set Max Selected(1);
lb_first << Set Script(update_expr);
lb_second << Set Script(update_expr);
Eval(EvalExpr(
nw << On Close(
Close(dt_temp, no save);
)
));

또한 테이블을 복제하여 "중복된" 열로 자체 조인을 수행하고 깊이로 원본 테이블에 조인하고 자체 조인을 제거하고 그룹화 선택기, 차이점에 대한 공식을 만들고 플롯을 생성할 수도 있다고 생각합니다.

JMP를 사용하면 이러한 작업을 쉽게 자동화할 수 있습니다.
