데이터 테이블이 있고, 누락된 행을 포함하여 두 개 이상의 고유 값이 포함된 열을 요약하고 싶습니다. 모든 행이 같은 열은 지루하고 더 흥미로운 열만 보고 싶습니다.
이를 달성하는 방법은 여러 가지가 있지만 가장 쉬운 방법은 다음과 같다고 생각합니다.
열 > 열 관리자로 이동
결과 테이블에는 각 열에 얼마나 많은 고유 항목이 있는지 알려주는 N Unique가 있는 열이 있습니다. 또한 해당 열에 얼마나 많은 누락 값이 있는지 알려주는 N Missing이 있는 열도 있습니다.
안타깝게도 N Unique는 연속 열에 대해 자동 계산되지 않지만 빨간색 팝업 메뉴에는 모든 숫자 열에 대한 계산 강제 실행 옵션이 제공됩니다.
또한 해당 테이블을 사용하여 고유한 값이 하나만 있는 열을 선택할 수 있습니다. 그런 다음 해당 열은 원래 테이블에서 선택되므로 숨기고 제외할 수 있으므로 "흥미롭지 않은" 열을 강제로 보지 않아도 됩니다.
저는 러다이트입니다. JMP17입니다. 고맙습니다. 제가 이걸 스크립트로 작성할 수 있을 것 같습니다. 누군가 이미 이걸 깼는지 궁금했습니다.
저는 애드인에 대한 "광고"를 별로 좋아하지 않지만 Analyse Columns가 도움이 될 수 있을까요? 공개 버전은 작동해야 합니다(JMP17에서도 작동해야 합니다)). 루프가 있는 간단한 스크립트는 이러한 열을 쉽게 제거/제외/숨기거나 처리할 수 있는 모든 것을 할 수 있습니다.
Jarmo의 멋진 추가 기능! 이걸 좀 건드려봐야겠지만 훌륭해 보이네요. 여기 웨이퍼에 1개 이상의 고유 항목이 있는 모든 열을 요약하는 스크립트가 있습니다.
dt = Current Data Table();
colList = Current Data Table() << Get Column Names( String );
dcols = {};
For( i = 1, i <= N Items( colList ), i++,
If( Contains( colList[i], " / " ),
Insert Into( dcols, colList[i] )
)
);
Show( dcols );
Split_Cols = {};
Insert Into( Split_Cols, :wafer );
For( j = 1, j <= N Items( dcols ), j++,
summarize(unique_values = by( Column(dcols[j]) ));
if (N Items(unique_values) > 1, Insert Into( Split_Cols, dcols[j] ) );
);
Show(Split_cols);
Current Data Table() << Summary(
Group( Split_cols ),
Freq( "None" ),
Weight( "None" )
);저는 for 루프 대신 For Each, Filter Each, Transform Each를 사용하는 것을 제안합니다. 더 빠르고 읽기 쉽기 때문입니다. 하지만 문제가 있고 하나의 불쾌한 버그/기능이 있는 경우 속도가 너무 빨라서 디버깅하고 처리하기가 더 성가실 수 있습니다. 다행히도 이 버그/"기능"은 이와 같은 간단한 경우에는 존재하지 않습니다( Function() 기본 로컬 및 Each 함수의 문제 ). 누락된 값을 "유효한" 값으로 간주하고 싶었는지 잘 모르겠으므로 Filter Each 루프 내부에 Remove From을 주석 처리했습니다.
Names Default To Here(1);
dt = Current Data Table();
collist = dt << Get Column Names("String");
valid_cols = Filter Each({colname}, collist,
Summarize(dt, vals = By(Eval(colname)));
//Remove From(vals, Contains(vals, "")); // drop missing values if necessary
N Items(vals) > 1;
);
dt_summary = dt << Summary(
Group(valid_cols),
Freq("None"),
Weight("None"),
//Link to original data table(0),
Output Table("Non-Unique Summary")
);
간단한 데모 테이블을 만드는 스크립트는 다음과 같습니다.
dt = New Table("demo",
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a", "a", "a", "a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b", "b", "b", ""})),
New Column("Column 3", Character, "Nominal", Set Values({"", "", "", ""})),
New Column("Column 4", Character, "Nominal", Set Values({"c", "d", "", ""})),
New Column("Column 5", Character, "Nominal", Set Values({"c", "d", "e", "f"}))
);
그 애드인은 JMP에 Columns Manager가 생기기 전에 만들어졌고 저는 여전히 대부분 Columns Manager보다 그것을 선호합니다. 저는 그것들이 다른 사용 사례가 있을 것이라고 생각하고 Columns Manager는 Columns Viewer 플랫폼을 몇 가지 좋은 추가 기능으로 대체하려 하고 Analyse Columns는pandas 프로파일링에서 영감을 얻었습니다(ydata 프로파일링으로 이름이 바뀐 듯합니다). 요약 통계 측면에서 데이터가 어떻게 보이는지 빠르게 확인할 수 있어야 했기 때문입니다.