수식 연결 및 제외여러분,
활성 열 수식이 많은 테이블(샘플)이 여러 개 있습니다. 내 스크립트는 한 지점에서 모든 테이블을 연결합니다. 그러나 연결된 모든 데이터를 비교 / 오버레이하기 위해 개별 테이블 데이터 (샘플)를 그대로 유지하고 싶기 때문에 수식을 억제하고 싶습니다. 불행히도 연결할 때 수식을 제대로 끌 수 없는 것 같고 새로 연결된 열이 평가되어 개별 샘플 데이터가 손실됩니다. 코드가 첨부된 상태에서 이 비트가 있다고 생각했지만 초기 테이블을 다른 폴더에 다시 복사했을 때 공식이 "재활성화"되어 약간의 불만이 생겼습니다. 좋은 수정 사항이 있다면 Suppress Formula Evaluation이 현재 구현에서 작동하지 않기 때문에 어떤 의견이든 환영합니다.
닐
Con = Expr(
n = N Table();
dt = {};
// Sort list ascending (sample replicates)
For( i = 1, i <= n, i++,
table = data table(i);
insert into(dt, table);
sort list into(dt)
);
// Concatenate each file (sample replicates)
dt_all = Data Table( dt[1] );
For(i = 1, i <= n, i++,
If(i > 1,
Suppress Formula Eval(suppress=1);
dt_all << Concatenate(Invisible, dt[i], Append to first table);
)
);
Current Data Table(dt_all);
);
데이터 테이블스크립팅Re: 수식 연결 및 억제당신이해야 할 일은 연결하기 전에 수식을 삭제하는 것입니다.그러면 값이 정적 값으로 변환되므로 문제가 발생하지 않습니다.
:yourColumn << delete formula;
Re: 수식 연결 및 억제짐,
응답해 주셔서 감사합니다. 테이블당 수식이 있는 열이 약 10개 있으므로 한 번에 모두 삭제하는 "총괄" 접근 방식이 있습니까?
닐
Re: 수식 연결 및 억제열 이름을 목록에 넣은 다음 목록 전체를 반복하여 각 항목을 삭제할 수 있습니다.
Re: 수식 연결 및 억제JMP는 Standardize Attributes를 사용하여 대화식으로 이 작업을 수행할 수도 있습니다.
모든 열을 선택하고 열 중 하나를 마우스 오른쪽 버튼으로 클릭한 다음 속성 표준화를 선택합니다.

속성을 삭제하기 위해 수식을 추가하고 확인(또는 적용)을 누릅니다.

JMP16이 있는 경우 향상된 로그에 인쇄됩니다.
// Open Data Table: Wheat.jmp
// → Data Table("Wheat")
Open("$SAMPLE_DATA/Wheat.jmp");
// Standardize column attributes
Local({old dt = Current Data Table()},
Current Data Table(Data Table("Wheat"));
For Each({col, index},
{:Variety, :Yield, :Moisture, :Pred Formula Yield, :Cond Pred Formula Yield},
col << Delete Formula
);
Current Data Table(old dt);
);
그리고 이것은 이것을 처리하는 방법에 대한 좋은 아이디어를 제공합니다(txnelson이 말한 것과 동일하게 목록을 반복하고 이동하면서 수식을 삭제합니다). << Get Column Names를 사용하여 테이블의 모든 열을 가져올 수도 있습니다. 열이 없는 열에서 수식을 제거할 수는 없지만(Enhanced log에서 제공하는 스크립트는 이와 같이 직접 작동하지 않습니다), 열 << Delete 수식을 Try()로 래핑하여 이를 우회할 수 있습니다. 향상된 로그 스크립트를 정리한 후 다음과 같이 끝날 수 있습니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Wheat.jmp");
For Each({col}, dt << get column names(String),
Try(Column(dt, col) << Delete Formula)
);Re: 수식 연결 및 억제늦은 답변 죄송합니다. 모든 피드백에 감사드립니다.
아직 모든 열을 공격하지 않고 특정 열에서 하나의 수식을 제거하려고 했습니다. 루프 외부에 "수식 삭제" 줄을 적용하면 원하는 결과가 나옵니다. 즉, 수식이 존재하지 않습니다. 그러나 동일한 행이 루프 내로 들어가면 파일을 연 후 다음 오류가 발생합니다.
"컬럼 기공 직경(um)에 '수식 삭제' 액세스 또는 평가에 수식이 없습니다. 수식 삭제/*###*/"
분명히 나는 아직 문제가 있는 이유를 알기 위해 역학을 이해하지 못합니다. 통찰력을 제공할 수 있습니까?
감사합니다.
For( i=1, i <= N Items(b), i++,
file_1 = Open(SD1 || b[1]);
file_1:"Pore Diameter (um)" << delete formula;
If(i > 1,
file_nxt = Open(SD1 || b[i], Private);
file_1 << Concatenate(file_nxt, Append to first table);
);
);
//file_1:"Pore Diameter (um)" << delete formula;
file_1 << Save(SD1 || "All Summary");
Close("All Summary");Re: 수식 연결 및 억제올바른 데이터 테이블에 액세스하려고 합니까? 항상 for 루프에서 file_1과 동일한 파일을 엽니다.
다음과 같이 문제가 무엇인지 찾는 데 도움이 되도록 for 루프 내부에 디버그 인쇄를 추가할 수 있습니다.
file_1 = Open(SD1 || b[1]);
show(file_1);
show(file_1 << Get Column Names("String")); //depending how many columns you have might not want to do this
show(Contains(file_1 << Get Column Names("String"), "Pore Diameter (um)"));
file_1:"Pore Diameter (um)" << delete formula;또한 더 이상 필요하지 않은 데이터 테이블을 Close(dtref, no save);
Re: 수식 연결 및 억제자모,
문제를 밝혀주셔서 감사합니다. 기존 공식이 없으면 문제가 생길 줄은 몰랐습니다. 이를 염두에 두고 첫 번째 테이블에 대한 조건문을 만들었습니다. "file_1"에 특정 열 공식이 한 번 삭제되었기 때문에 이것은 분명히 작동했습니다. 첨부된 코드는 단일 열 예제에서 작동했습니다.
이제 수식이 있어야 한다는 것을 이해했으므로 문제는 모든 열에 수식이 없다는 것입니다. 따라서 모든 열 이름을 검색하면 연결된 열이 없는 하위 집합이 있습니다. 열에 수식이 있는지 테스트하여 적절한 목록을 루프에 구성할 수 있는지 테스트하는 방법이 있습니까? 아니면 열에 수식을 추가할 때마다 업데이트해야 하는 목록을 JSL에 설정하여 문제를 "무차별 대입"해야 합니까?
닐
For( i=1, i <= N Items(b), i++,
If(i==1,
file_1 = Open(SD1 || b[1]);
file_1:"Pore Diameter (um)" << delete formula;
);
If(i > 1,
file_nxt = Open(SD1 || b[i], Private);
file_1 << Concatenate(file_nxt, append to first table);
Close(file_nxt, no save);
);
);
file_1 << Save(SD1 || "All Summary");
Close("All Summary");