Re: 4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 수식 만들기몇 가지 문제가 있습니다.실행 중인 JMP 버전이 무엇인지 모르겠습니다.버그가 있는 것으로 보이는 JMP 16에서 공식을 개발했습니다.따라서 JMP 16에 저장했을 때 수식이 테스트한 것과 변경되었습니다.답변을 완료한 후 버그를 보고하겠습니다.사용할 올바른 수식은 다음과 같습니다.
If( Row() == 1,
dt = Data Table( "WEWA suitability matrix with data" );
dtLookup = Data Table( "WEWA suitability matrix" );
Show( dt, dtlookup );
);
curSpec = Uppercase( dt:Species );
curLandForm = Uppercase( dt:Landform );
curLandCover = Uppercase( dt:Landcover );
curTimber = Uppercase( dt:Timber Class );
x = .;
Try(
x = dtLookup:Suitability[dtLookup << get rows where(
Uppercase( dtLookup:Species ) == curSpec & Uppercase( dtLookup:Landform ) == curLandForm & Uppercase( dtLookup:Landcover ) ==
curLandCover & Uppercase( dtLookup:Timber Class ) == curTimber
)][1],
.
);
x;
나는 또한 마지막 응답에서 이 공식을 편집했으므로 아무도 그것에 대해 문제가 없어야 합니다.
제공한 최신 데이터에 조회 데이터 테이블과 불일치가 있습니다.일부 소문자를 대문자로 변경했습니다.내가 쓴 원래 공식은 이것을 보상하지 않습니다.현재 버전에서는 더 이상 문제가 되지 않도록 모든 조회를 대문자로 수행하도록 했습니다.
Re: 4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 수식 만들기여기요 @txnelson
두 솔루션 모두 나에게 의미가 있습니다. 공식 기반 솔루션을 선호합니다. 계속해서 귀하가 생성한 Observed Species 테이블의 "공식 파생.." 열에서 공식을 복사하여 실제로 서식지 적합성 지수(첨부)를 계산하는 두 번째 JMP 테이블로 복사했습니다. 수식을 적용하려고 하면 다음 오류가 발생합니다.

이 문제를 어떻게 해결할지 잘 모르겠습니다. 첨부된 JMP 데이터 테이블의 "수식 파생 적합성 열)을 살펴보고 어디에서 오류가 발생했는지 알려주시겠습니까? 도움을 주셔서 다시 한 번 감사드립니다. 케이시
Re: 4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 수식 만들기Virtual Join을 사용해 볼 수도 있습니다.
다음 두 테이블에 연결 열을 만듭니다(예: 4개의 그룹화 값 모두 연결).


그런 다음 가상 조인을 수행합니다.
링크 ID로 적합한 테이블:

물건을 가져오려는 테이블:

내 기억이 맞다면 가상 조인을 하려면 적어도 링크 ID가 저장될 데이터 테이블이 있어야 했습니다.
JMP의 가상 조인을 이해하기 위한 필수 요소
JMP On Air 가상 조인
Re: 4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 수식 만들기편집: 죄송합니다. 테이블에서 열 속성으로 이것을 원하는 부분을 놓쳤습니다. 대화 상자 등에서 4개의 값을 선택하는 사람을 기반으로 값을 반환하고 싶다고 생각했습니다. 따라서 Jim이 제안한 것과 같이 가야 합니다.
건배,
브래디
//////////////////
안녕,
이를 수행하는 방법에는 여러 가지가 있습니다. 아마도 가장 "교과서"적인 방법은 다차원 키가 있는 연관 배열을 포함하지만 사용 사례의 경우 다음과 같은 작업을 수행하는 것이 훨씬 더 간단합니다.
Names Default To Here( 1 );
//suppose these are the values you want to look up, and you've gotten them somehow
spec = "Worm-eating warbler";
form = "Terrace-mesic";
cover = "Mixed";
class = "sapling";
//set a variable reference to the lookup table
dt1 = Data Table( "WEWA suitability matrix.jmp" );
//add a formula column to the lookup table, concatenating these 4 values, separated by a comma for clarity
dt1 << New Column( "Concat", character, formula( Concat Items( {:species, :landform, :landcover, :timber class}, "," ) ) );
//create a matrix of the suitabilities and a list of the combo values
suits = dt1:suitability << get values;
combos = dt1:concat << get values;
//create a lookup value from your 4 values by concatenating them in the same way you did in the formula
myLookup = concatitems({spec, form, cover, class}, ",");
//grab the suitability value you want; it will have the same position in its matrix as the lookup value has in its list
s = suits[contains(combos, myLookup)];
show (s);
건배,
브래디
Re: 4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 수식 만들기다음은 조회를 처리하는 두 가지 방법입니다.첫 번째는 항목이 3개뿐인 샘플 테이블에 생성하여 적용한 수식입니다.WEWA 적합성 매트릭스 데이터 테이블을 조회하고 적합성 값을 가져옵니다.그것은 훌륭한 공식이지만 매우 효율적이지는 않습니다.

다음은 "적합성 유도 공식" 열에 사용된 공식입니다.
If( Row() == 1,
dt = Data Table( "WEWA suitability matrix with data" );
dtLookup = Data Table( "WEWA suitability matrix" );
Show( dt, dtlookup );
);
curSpec = Uppercase( dt:Species );
curLandForm = Uppercase( dt:Landform );
curLandCover = Uppercase( dt:Landcover );
curTimber = Uppercase( dt:Timber Class );
x = .;
Try(
x = dtLookup:Suitability[dtLookup << get rows where(
Uppercase( dtLookup:Species ) == curSpec & Uppercase( dtLookup:Landform ) == curLandForm & Uppercase( dtLookup:Landcover ) ==
curLandCover & Uppercase( dtLookup:Timber Class ) == curTimber
)][1],
.
);
x;
"적합성"이라는 열을 생성하는 두 번째 방법은 JMP의 업데이트 플랫폼을 사용하여 생성하는 것입니다.다음은 생성 스크립트입니다.
names default to here(1);
Data Table( "Observed Species" ) << Update(
With( Data Table( "WEWA suitability matrix" ) ),
Match Columns(
:Species = :Species, :Landform = :Landform, :Landcover = :Landcover,
:Timber Class = :Timber Class
)
);
추신Observed Species라는 데이터 테이블은 Sepcies, Landform, Landcover 및 Timber Class만 열로 시작합니다.
4개의 범주형 변수가 있는 조회 테이블에서 값을 가져오는 JMP 공식 만들기안녕하세요 여러분,
저는 75종의 조류에 대한 서식지 적합성 지수를 개발하고 있습니다. 각 조류 종에 대해 여기에 설명된(그리고 JMP 데이터 테이블로 첨부된) 것과 동일한 구조를 가진 테이블이 있습니다. 모든 종이 같은 테이블에 포함되도록 종별로 쌓겠습니다. 첨부된 테이블은 계층적입니다. 계층 구조의 첫 번째 수준은 종입니다(현재는 하나만 있지만 결국에는 75종 전체에 대한 데이터가 동일한 테이블에 있게 됩니다). 계층 구조의 다음 수준은 지형(예: 계곡, 테라스 또는 능선)입니다. 지형이 결정되면 계층 구조의 다음 수준은 토지 피복 유형(예: 낙엽수, 침엽수림, 혼합림)입니다. 지형/토지 피복 조합이 결정되면 다음 수준은 목재 등급(예: 관목 묘목, 묘목, 장대톱 목재, 대형 톱 목재)입니다. 종, 지형, 토지 피복 및 목재 등급의 각 4방향 조합은 0과 1 사이의 서식지 적합성 값을 갖습니다. 예를 들어, 오래된 낙엽수림을 좋아하는 벌레 먹는 꾀꼬리새는 계곡/낙엽수/대형 톱재 조합에 대해 높은 서식지 적합성 값(0.8)을 갖습니다. 이 동일한 종은 능선/혼합림/묘목 조합에 대해 더 낮은 서식지 적합성 값(0.2)을 갖습니다. 첨부된 표를 보시면 이해가 되실 겁니다.
나는 특정 현장에 대한 종/지형/토지 피복/목재 등급 조합을 기반으로 서식지 적합성 값을 찾기 위해 이 조회 테이블을 참조하는 열 속성으로 사용할 수 있는 공식을 생성하고 싶습니다. 수천). 내 첫 번째 생각은 정교한 if then 문을 사용하여 이 작업을 수행하는 것이었지만 각 종에 대해 60개의 지형/토지 피복/삼림 연령 조합과 75종이 있습니다. 수식 편집기에서 수동으로 수행하는 것 외에 다른 방법으로 이 작업을 수행하는 방법을 모르겠습니다. 이는 미친 것 같습니다. 종/지형/토지 피복/목재 등급 등 4개의 계층적 범주형 데이터 열의 고유한 조합을 기반으로 적합성 값을 가져오기 위해 이 조회 테이블을 참조할 수 있는 열 수식을 만드는 간단하고 효율적인 방법이 있습니까?
이에 대한 도움을 주시면 감사하겠습니다. 예전에 올린 글을 봤는데 @brady_brady 훨씬 더 간단한 조회 테이블을 위한 수식을 만드는 방법에 대해 설명했지만 이와 같은 계층적 데이터 세트에 대해 수식이 어떻게 작동하는지 알 수 없었습니다. GO, JMP 커뮤니티, GO!!!
데이터 혼합 및 정리