이름으로 열 연결여기서 일할 게 있어요
해결됨: 연관된 열을 자동으로 플롯 - JMP 사용자 커뮤니티
하지만 불필요하게 번거롭다는 건 확실합니다. H(높음)로 끝나는 열 이름이 있는데, 그렇지 않으면 일치하지만 L(낮음)로 끝나는 열 이름과 연결해야 합니다. 열 이름의 마지막 문자를 제거한 연관 배열을 만들 수 있습니다. 다음에 무엇을 해야 할지 궁금하세요?
names default to here(1);
dt = Current Data Table();
colList = dt << get column names( string );
for each({col,index}, colList,
//colList[index] = substr(col,1,3)
colList[index] = Left(col,Length(col)-1)
);
grps = associative array(colList)<<GET keys=""></GET>
<P>예를 들어, VT123ABCH는 VT123ABCL 등에 대해 플롯해야 합니다.</P><LINGO-LABS id="lingo-labs-848773" slang="en-US" mode="CREATE"><LINGO-LABEL>자동화 및 스크립팅</LINGO-LABEL></LINGO-LABS>Re: 이름으로 열 연관쌍은 항상 존재합니까? 이 쌍 외에 테이블에 다른 열이 있습니까? 특정 순서로 되어 있습니까?
편집하다:
실제 사용 사례에 따라 훨씬 더 개선될 가능성이 높습니다.
names default to here(1);
dt = New Table("",
New Column("VT123ABCH"),
New Column("VT123ABCL")
);
collist = dt << get column names(string);
hcols = Filter Each({colname}, colList,
Ends With(colname, "H");
);
aa = Associative Array();
For Each({hcolname}, hcols,
lcolname = Left(hcolname, Length(hcolname) - 1) || "L";
If(dt << Has Column(lcolname),
aa[hcolname] = lcolname
);
);
Show(aa);Re: 이름으로 열 연관다음은 원하는 작업을 수행하는 방법의 예입니다.

Names Default To Here( 1 );
dt =
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colNames = dt << get column names( continuous, string );
For Each( {col}, colNames,
If( Ends With( col, "1" ) & Contains( colNames, Substr( col, 1, Length( col ) - 1 ) || "2" ),
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( As Column( col ) ), Y( As Column( Substr( col, 1, Length( col ) - 1 ) || "2" ) ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
)
);Re: 이름으로 열 연관자르모
제가 가진 것보다 훨씬 깔끔해 보이지만, 이 오류가 발생합니다.
"개체 '데이터 테이블'이 '열 있음' 메시지를 인식하지 못합니다."
Re: 이름으로 열 연관JMP18에 추가되었습니다

이를 Contains()로 변경하면 대부분의 경우 문제가 없습니다.
Contains(collist, lcolname)
Re: 이름으로 열 연관자르모
이건 비슷하지만 hcolname이 비어 있는 반면 lcolname은 값이 있다는 것을 알아챘습니다. hcolname을 객체 또는 목록으로 설정해야 합니까?
Re: 이름으로 열 연관hcols에는 "H"로 끝나는 모든 열의 목록이 포함되어야 합니다. 그런 다음 항목이 하나씩 hcolname으로 사용되는 경우 For Each 및 each에서 사용됩니다. 무슨 일이 일어나고 있는지 이해하기 위해 디버그 출력을 추가할 수 있습니다. 또한 이것이 확실히 이것을 하는 유일한 방법은 아닙니다. 예를 들어 단일 루프에서 쉽게 할 수 있습니다.
Re: 이름으로 열 연관
자르모
이렇게 하면 조금 더 가까워지지만 lcolname은 최종 값이 나올 때까지 채워지지 않습니다.
For Each({hcolname, index}, hcols,
{lcolname, index}, hcols = Left(hcolname, Length(hcolname) - 1) || "L";
If(dt << Contains(collist, lcolname),
aa[hcolname] = lcolname
);
);Re: 이름으로 열 연관제게는 잘 작동하는 것 같습니다. 예제 표를 반도체 용량으로 변경하고 끝에서 몇 가지 숫자를 확인할 수 있습니다.
Names default to here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
collist = dt << get column names(string);
hcols = Filter Each({colname}, colList,
Ends With(colname, "1");
);
aa = Associative Array();
For Each({hcolname}, hcols,
lcolname = Left(hcolname, Length(hcolname) - 1) || "2";
If(dt << Has Column(lcolname),
aa[hcolname] = lcolname
);
);
Show(aa);
aa = ["ESM1" => "ESM2", "FST1" => "FST2", "INM1" => "INM2", "IVP1" => "IVP2", "NPN1" => "NPN2", "PBA1" => "PBA2", "PLG1" => "PLG2", "PLY1" => "PLY2", "PNP1" => "PNP2", "RES1" => "RES2", "RSP1" => "RSP2", "SIT1" => "SIT2", "VDP1" => "VDP2", "VPM1" => "VPM2"];
하지만 조금 더 많은 구성 옵션을 사용하여 약간 다른 경로를 선택할 수도 있습니다.
Names Default To Here(1);
endchar1 = "1";
endchar2 = "2";
rgx_endchar1 = Eval Insert("(.+?)^endchar1^$");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
collist = dt << get column names(string);
aa = Associative Array();
For Each({colname}, collist,
col_ptrn = Regex(colname, rgx_endchar1, "\1");
If(!IsMissing(col_ptrn), // ends with H
If(Contains(collist, col_ptrn || endchar2),
aa[col_ptrn || endchar1] = col_ptrn || endchar2;
);
);
);
show(aa);
이 둘은 모두 나에게 같은 결과를 반환합니다.
Re: 이름으로 열 연관짐
훌륭한 스크립트이고 훨씬 더 간단합니다. 모든 플롯을 "컴파일" 창에 두기 위해 약간 조정했습니다.
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( continuous, string );
New Window( "Compilation",
For Each( {col}, colNames,
If(
Starts With( col, "VT" ) & Contains(
colNames,
Substr( col, 1, Length( col ) - 1 ) || "H"
),
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( As Column( col ) ),
Y( As Column( Substr( col, 1, Length( col ) - 1 ) || "L" ) )
),
Wrap( :LOT ),
Elements(
Points( X, Y, Legend( 1 ) ),
Line Of Fit( X, Y, Legend( 3 ) )
)
)
)
)
);Re: 이름으로 열 연관자르모
JMP의 기이함. 첫 번째 것은 작동하지 않고 두 번째 것은 작동하고, JMP 17일 수도? 참아주셔서 감사합니다.