열이 존재하는지 확인<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />수식이 포함된 새 열을 생성하는 JMP 스크립트가 있습니다. 열 생성을 건너뛰고 추가 열 생성을 방지할 수 있도록 열이 이미 존재하는지 감지하는 방법을 찾으려고 합니다. 나는 그것이 거기에 있다고 확신하지만 내가 가지고 있는 문헌에서 그것을 찾지 못하고 있습니다.
감사해요.
마이크
Re: 컬럼 존재 여부 확인다음은 대소문자를 구분하지 않는 내 논리 버전입니다.
dt = open("$sample_data\Big Class.jmp");
col_name_list = dt << get column names(string);
// Convert all column names to uppercase for case-insensitive search
for (i = 1, i <= nitems(col_name_list), i++,
col_name_list[i] = uppercase(col_name_list[i]);
);
new_column = "BMI";
// English BMI Formula BMI = ( Weight in Pounds / ( Height in inches^2 ) ) x 703
if (!contains(col_name_list, uppercase(new_column)),
dt <<NEW column=""></NEW>Re: 컬럼 존재 여부 확인감사합니다!
다른 솔루션은 대소 문자를 구분하기 때문에 귀하의 예만 저에게 효과적이었습니다. 내 문자열 문자의 대/소문자가 올바른지 확신할 수 없었기 때문에 귀하의 것을 사용해야 했습니다.Re: 컬럼 존재 여부 확인PMroz,
귀하가 작성한 코드가 저에게도 잘 작동하는지 확인하는 것으로 시작하겠습니다. 제가 작성한 설명이 JMP 9 또는 10 동작과 일치하지 않습니다.
답장을 읽은 후 JMP 9 및 10에서 목록, 문자열 및 숫자가 있는 포함 및 if 문을 여러 가지 조합으로 시도했습니다. 내 시도가 철저하지는 않았지만 모든 결과가 귀하의 결과와 일치합니다. 처음에 귀하의 첫 번째 게시물을 읽었을 때 몇 년 전에 contains()>0을 사용하여 수행했던 몇 가지 문제 해결이 생각났습니다. 시나리오를 다시 만들 수 없습니다. 그러나 JMP 스크립팅 가이드에서 다음 정보를 찾았습니다. 예제에 적합할 수 있는 >0과 함께 포함을 사용하는 방법에 대해 자세히 설명하지만 필수인지 여부를 명시적으로 언급하지는 않습니다.
JMP 스크립팅 가이드 버전 10의 136페이지:
"항목이 목록에 있는지 평가하려면 다음을 사용하십시오. 위치() 그리고 포함() ~와 함께 >0 . 반환 값 0
항목이 목록에 없음을 의미합니다. 반환된 값 1은 항목이 목록에 한 번 이상 있음을 의미합니다."
...
"번호가 있는지 확인 5 에 존재한다 번호 목록:
NRow(Loc(numList, 5)) >0;
0
포함(numList, 5) >0;
0"
도움이 되었기를 바랍니다.
Re: 컬럼 존재 여부 확인안녕하세요 위베포 님
다양한 조합을 시도해 보았고 양의 정수를 부정하면 크기에 관계없이 결과가 0이 됩니다. 따라서 제 코드가 작동합니다(JMP 9 및 10에서).미리 말씀해 주셔서 감사합니다. 이 접근 방식은 모든 언어에서 작동하지 않을 수 있습니다.확실히 더 많은 테스트를 거칩니다.
b = 2000000000000;
!b;
로그에는 다음이 표시됩니다.
0
문안 인사,
PMroz
Re: 컬럼 존재 여부 확인알아두면 편리합니다. 도구 상자에 추가할 다른 도구가 있다는 것은 항상 기쁩니다.
감사해요.
Re: 컬럼 존재 여부 확인알아두면 매우 편리합니다. 나는 그것을 조심해야 할 것이다.
감사해요
Re: 컬럼 존재 여부 확인내가 아는 단일 기능이 없습니다. 하지만 누락() 와 함께 스크립트 가능() 트릭을 할 수 있습니다.
또한 열이 존재하지 않는 경우 스크립트가 중지되지 않도록 하려면 Try() 문으로 열을 묶어야 합니다.
dt = Open( "$sample_data\Big Class.jmp" );
new_column = "BMI";
If( Is Missing( Is Scriptable( Try( Column( new_column ) ) ) ),
dt << New Column( new_column, numeric, continuous, formula( 703 * :weight / :height / :height ) )
);
Re: 컬럼 존재 여부 확인JMP의 모든 최신 버전에서 이것이 사실인지 확실하지 않습니다. 코드의 견고성을 향상시킬 수 있는 기회를 강조하기 위해서만 이 설명을 작성합니다.
'포함'은 항목의 위치를 반환합니다. 0은 거짓으로 해석되고 양수 값은 참으로 해석되기 때문에 'if' 문에서 사용하기에 좋습니다. 앞에 not '!'가 포함된 경우 항목이 없거나 첫 번째 항목으로 있을 때 조건이 작동합니다. 그러나 항목이 처음이 아닌 경우(1보다 큰 값) '!' 조건을 false로 변환하지 못할 수 있습니다. 이것은 '포함'과 비교 '>0'을 사용하여 피할 수 있습니다. 구문은 아래를 참조하십시오.
dt = Open( "$sample_data\Big Class.jmp" );
col_name_list = dt << get column names( string );
new_column = "BMI";
// English BMI Formula
// BMI = ( Weight in Pounds / ( Height in inches x Height in inches ) ) x 703
If( !(Contains( col_name_list, new_column ) > 0),
dt << New Column( "BMI", numeric, continuous, formula( 703 * :weight / :height / :height ) )
);
Re: 컬럼 존재 여부 확인감사합니다. 저에게는 잘 작동합니다. 나는 존재를 확인하는 기능을 찾을 것으로 기대했지만 이것은 작동합니다.
Re: 컬럼 존재 여부 확인
dt = open("$sample_data\Big Class.jmp");
col_name_list = dt << get column names(string);
new_column = "BMI";
// English BMI Formula
// BMI = ( Weight in Pounds / ( Height in inches x Height in inches ) ) x 703
if (!contains(col_name_list, new_column),
dt <<NEW column=""></NEW>