열 수식을 검색할 수 있나요?수백 개의 열이 있는 데이터 테이블이 있습니다. 모든 열 수식을 검색하여 특정 열이 열 수식에 사용되는지 확인하고 싶습니다. 이것이 가능한가?
데이터 혼합 및 정리Re: 열 수식을 검색할 수 있나요?예......
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "/C:/Program Files/JMP/JMPPRO/19/Samples/Data/Big Class.jmp" );
dt << new column("Ratio", formula(:height/:weight));
theFormula = Char(dt:Ratio << get formula);
If( contains(theFormula, "height"), show("found it"));Re: 열 수식을 검색할 수 있나요?JMP Pro에 액세스할 수 있다면 Formula Depot을 사용하여 이 작업을 수행할 수 있습니다.

수식 열을 선택하고 열 복사를 선택한 다음 새 스크립트(ctrl + t)를 열고 거기에 붙여넣을 수 있습니다. 그런 다음 스크립트 편집기에서 검색하세요.
해당 열을 제거해 볼 수도 있습니다. 해당 열이 사용 중인 경우 JMP는 다음과 같은 경고를 표시합니다.

편집하다:
JMP18에는 Columns Manager를 활용하는 방법도 있을 수 있지만 그 중 하나를 알아낼 수 있습니다. 데이터 사전은 거의 가능하지만 수식을 이미지로 저장하므로 쉽게 검색할 수 없습니다.

물론 순수 스크립팅 옵션도 많이 있습니다.
Re: 열 수식을 검색할 수 있나요?짐,
감사합니다. 현재 저는 스크립팅에 능숙하지 않기 때문에 알고리즘이 데이터 테이블의 모든 열을 반복하여 대상 값이 포함된 열 목록을 출력하도록 하는 방법을 보여 주시겠습니까?
자르모,
안타깝게도 저는 JMP Pro가 없습니다. 어떤 이유로 열을 삭제하려고 할 때 나타나는 오류 메시지에는 수식이 포함된 열이 나열되지 않습니다. 이유를 모르겠습니다. 나 역시 데이터 사전이 도움이 될 수 있지 않을까 생각했는데, 한번 살펴보니 어떻게 되는지 알 수 없었다. 그래도 도움을 주셔서 감사합니다.
Re: 열 수식을 검색할 수 있나요?또한 JMP Pro에 의존하지 않는 옵션을 하나 더 공유했습니다.
수식 열을 선택하고 열 복사를 선택한 다음 새 스크립트(ctrl + t)를 열고 거기에 붙여넣을 수 있습니다. 그런 다음 스크립트 편집기에서 검색하세요.


Re: 열 수식을 검색할 수 있나요?오오오... 멋지네요. 스크립트 편집기에 열을 붙여 넣을 수 있는지 몰랐습니다.
내 생각엔 그게 효과가 있을 것 같아.
감사해요!
Re: 열 수식을 검색할 수 있나요?각 열의 스크립트를 복사하라는 @jthi 의 제안과 마찬가지로 빨간색 삼각형(테이블 왼쪽 상단) > 테이블 스크립트 복사(데이터 없음)를 사용하여 데이터 없이 전체 테이블 의 스크립트를 복사할 수 있습니다.

스크립트에는 모든 열 수식이 포함된 테이블을 다시 생성하는 jsl이 포함됩니다. 해당 스크립트를 스크립트 창에 붙여넣고 거기에서 검색하세요.
이게 도움이 되길 바란다!
@줄리안
Re: 열 수식을 검색할 수 있나요?@julian 어쩌면 이런 유형의 검색이 어떤 기능으로 열 관리자에 구현될 수 있을까요? 따라서 특정 속성이 있는 값으로 필터링하는 대신 열 속성 내에서 값을 검색할 수도 있습니다. 최소한 수식, 메모 및 짧은/긴 열 이름은 검색할 수 있으면 이점을 얻을 수 있는 몇 가지 열 속성입니다.
Re: 열 수식을 검색할 수 있나요?마음에 듭니다. Columns Manager가 그런 경우에 자연스러운 장소인 것 같습니다. 또한 "열 속성에서 찾기"를 제공하는 다른 확인란이 있는 경우 일반 찾기 대화 상자 내에서 어떻게 작동할지 생각하고 있었습니다.Re: 열 수식을 검색할 수 있나요?테이블 스크립트를 사용하겠다는 @julian 의 아이디어로 시작해서 몇 가지 기능을 추가했습니다.
- 수식에서 열을 검색하고
- 검색 결과를 표시하려면:
//Open( "$SAMPLE_DATA/Ship Damage.jmp" );
// get all column formulas via the table script
dt = Current Data Table();
dt << copy table script( "No Data" );
script = Parse( Get Clipboard() );
//convert to List for easier indexing
Substitute Into( script, Expr( New Table() ), Expr( {} ) );
// just keep the columns
allCols = Filter Each( {col}, script, Head( col ) == Expr( New Column() ) );
// convert column info into lists
ColList = Transform Each( {col}, allCols, Substitute( Name Expr( col ), Expr( New Column() ), Expr( {} ) ) );
allColNames = Transform Each( {col}, ColList, tmp = Arg( col, 1 ); If (is string(tmp), tmp, tmp["en"]) );
// keep columns with formulas
ColsWithFormulas = Filter Each( {col}, ColList,Try(col["Formula"]; 1 , 0 ));
ColNames = Transform Each( {col}, ColsWithFormulas, tmp = Arg( col, 1 ); If (is string(tmp), tmp, tmp["en"]) );
ColFormulas = Transform Each( {col}, ColsWithFormulas, col["Formula"] );
// helper function to search for column names in formulas
ContainsExpr = Function( {expression, pattern},
tmp = Substitute( Name Expr( expression ), Name Expr( pattern ), Expr( . ) );
Not( Name Expr( tmp ) == Name Expr( expression ) );
);
summary = New Table("Formuala Overview",
New Column( "column Formula", Character ),
New Column( "used cols", Character ),
);
wait(0);
// fill the summary tale with all combinations of formulas and the used columns
Current Data Table( dt ); // make dt the current data table, otherwise <AS column=""> won't work !
For Each( {myFormula, idx1}, ColFormulas,
For Each( {col}, allColNames,
formulaCol = ColNames[idx1];
dt:formulaCol << Set Header Text Color( "Red" );
If( ContainsExpr( Name Expr( myFormula ), Name Expr( As Column( col ) ) ),
Eval( Eval Expr( summary << add row( {"column Formula"n =Expr(formulaCol ), "used cols"n = Expr( col )} ) ) );
Column(col) << Set Header Background Color( {102, 255, 140} );
)
)
);
// show a tabulate for easy look up
summary << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :column Formula, :used cols ) ) ),
Local Data Filter( Mode( Show( 0 ) ), Add Filter( columns( :column Formula, :used cols ) ) )
);</AS>Re: 열 수식을 검색할 수 있나요?열 배경색을 통해 수식에 사용된 열을 강조 표시하는 접근 방식 외에도
수식에 사용되는 열에 표시기 기호를 추가하는 것을 생각할 수도 있습니다.
Re: 열 수식을 검색할 수 있나요?@hogi 정말 훌륭해요.