단일 열 V 조회 동등 항목안녕하세요 여러분,
그래서 저는 엑셀에서 vlookup과 같은 방식으로 작동하는 공식을 사용해 왔지만, 이 공식이 대용량 데이터 표에서는 작동하지 않는다는 것을 알게 되었습니다. 기본적으로 이 공식은 JMP를 느리게 만들고 죽여버리기 때문입니다.
첨부된 샘플 데이터 표에는 예상대로 작동하는 두 가지 함수를 결합한 내용이 분리되어 있습니다.

VLU 항목

VLU 결과

"VLU 항목" 열의 수식을 VLU 결과 수식에 적용하면 데스 스파이럴이 발생합니다. 두 열을 분리하는 것이 큰 문제는 아니지만, 하나의 수식으로 처리할 수 있다면 더 깔끔할 것입니다.
어떤 아이디어라도 감사합니다!!
스티브
데이터 블렌딩 및 정리Re: 단일 열 V 조회 동등 항목JMP19에서는 새롭고 멋진 Col Aggregation이 도입되면서 일부 속도 문제가 해결되었습니다.
JMP 19용 Graph Builder의 새로운 기능
이것도 그렇죠 : )
Re: 단일 열 V 조회 동등 항목JMP에서 VLookup을 수행하는 또 다른 방법은 업데이트 플랫폼을 사용하는 것입니다. 이 방법은 매우 효율적입니다. 단, 조회 값이 별도의 테이블에 있어야 하지만, 데이터 테이블의 경우 간단한 작업입니다. 다음은 조회를 매우 빠르게 수행하는 스크립트입니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Select matching cells
dt << Select Where( :VALUE_STR == "" );
// Invert current selection
dt << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of Vlookup example" )
dt << Select Where( :VALUE_STR == "" );
dt << Invert Row Selection;
dtSum = dt << Subset(
Selected Rows( 1 ),
columns( :HEADER_ID, :VALUE_STR ),
output table( "Lookup" )
);
// Change column name: VALUE_STR → VLU Result from UPdate
dtSum:VALUE_STR << Set Name( "VLU Result from UPdate" );
// Update data table
dt << Update(
With( Data Table( dtSum ) ),
Match Columns( :HEADER_ID = :HEADER_ID )
);
// Remove Lookup table
Close( dtSum, nosave );
Re: 단일 열 V 조회 동등 항목
@shampton82 님 이 쓰셨습니다:
"VLU 항목" 열의 수식을 가져와 VLU 결과 수식에 넣으면 데스 스파이럴이 발생합니다.
실제로는 죽음의 나선처럼 느껴지지만, 자세히 살펴보면 극단적인 커피 소비의 나선입니다.
그리고 JMP가 열 수식을 얼마나 자주 다시 계산하는지 보여드립니다!
문제는 다음으로 인해 발생합니다.
Col Maximum(if (String comparison ))
열 수식 개념을 포기하는 것 외에도 JMP < 19에 대한 다른 해결 방법은 다음과 같습니다.
- DON'T use a string comparison, convert the string to a number:
:VALUE_STR[Col Maximum( If( :X__3 == 3.1, Row(), . ), :HEADER_ID )]
팁과 요령 - JMP/JSL을 활용한 모범 사례
- ... or use 포함()
:VALUE_STR[Col Maximum( If( contains(:X__3 , "V3_1"), Row(), . ), :HEADER_ID )]
- DON'T use 최대() to "distribute" a single value in groups
... 열 중앙값() is much faster:
:VALUE_STR[Col Median( If( :X__3 == "V3_1", Row(), . ), :HEADER_ID )]
Re: 단일 열 V 조회 동등 항목@txnelson 감사합니다!
저는 이것을 공식 칼럼으로 보관하고 싶었지만 이것도 뒷주머니에 넣어두겠습니다.
Re: 단일 열 V 조회 동등 항목@hogi 님 , 감사합니다!
비유가 더 마음에 드네요. 그리고 COLMEDIAN() 사용 제안도 완벽하게 작동했습니다. 두 함수의 성능이 이렇게 다르다는 게 놀랍네요. 19가 곧 설치되기를 기대해야 할 이유가 하나 더 늘었네요.
Re: 단일 열 V 조회 동등 항목또한 저는 연관 배열을 기반으로 한 솔루션을 생각해냈습니다.
As Constant(
Summarize( bygp = by( :HEADER_ID, :VALUE_STR ) );
aa = Associative Array( bygp[1], bygp[2] );
);
Parse( Eval( Parse( "aa[\!"" || Char( :HEADER_ID[Row()] ) || "\!"]" ) ) );
Re: 단일 열 V 조회 동등 항목우와!
- 2차원으로 그룹 별로 요약해 보세요 *)
- ...누락된 항목을 제거하기 위해 연관 배열에 입력:
요약은 항목을 정렬하고 누락된 항목이 먼저 나오며 두 번째 쌍으로 덮어씁니다.
- As Constant를 사용하여 속도 향상
더 짧게:
As Constant(
Summarize( bygp = by( :HEADER_ID, :VALUE_STR ) );
aa = Associative Array( bygp[1], bygp[2] );
);
aa[Char( :HEADER_ID[Row()] )];
*) 중요: 요약은 문자열을 저장합니다(숫자 열에도 해당)
-> aa[문자(숫자)]