위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />여러 조건이 있는 데이터 세트에서 행을 선택하고 싶지만 "and"가 포함된 단일 select where 문을 사용하는 대신 현재 선택 항목에서 선택하여 한 번에 하나씩 조건을 반복하고 싶습니다. 이는 선택 위치 창에서 매우 간단합니다("현재 선택에서 선택" 사용). JSL에서 어떻게 할 수 있나요?
예를 들어, 열 이름 목록 cnames = {"Col1", "Col2", "Col3"}과 값 목록 cspecs = {"a", "b","c}가 있고 다음을 선택하려고 합니다. Col1 = a, Col2 = b, Col3 = c인 데이터 테이블의 행입니다. cnames의 항목을 반복하면서 매번 현재 선택 항목에서 선택하도록 지시하겠습니다. 감사해요!
dt<<
where(열로(cnames)를 선택하십시오. )==cspec )
답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.나는 여기 스크립트를 기반으로 작성한 이 코드를 작업하려고 합니다. 진단 열은 문자 열이며 이 코드는 작동하지 않습니다. 기본적으로 테이블에는 세 개의 열이 있으며 각 열에는 ICD 코드가 있습니다. ICD 코드와 일치하는 경우를 선택하고 싶습니다. 이는 ICD 코드와 일치하는 열이어야 하므로 중첩된 for 루프가 됩니다. 주석 처리되지 않은 코드는 작동하지만 Select string에 인용문이 없으므로 아마도 이것이 작동하지 않는 이유일 것입니다. 이 문제를 어떻게 해결할 수 있나요?
dt = Open( "\Main.jmp" );
colnames = {"Diagnosis 1", "Diagnosis 2", "Diagnosis 3"};
ICDcodes = { "7731", "7626", "V3001", "V3000"};
tblname = "Subset.jmp";
/*
dt << Select Where(
:Diagnosis 1 == "V3001",
Current Selection( "extend" )
);*/
select_string = "";
For (i = 1, i <= N Items(colnames), i++,
For (j = 1, j <= N Items(ICDcodes), j++,
if (select_string == "",
// then
// select_string = ":" || colnames[i] || " == " || char(ICDcodes[j]);
select_string = ":" || colnames[i] || " == " || char(ICDcodes[j]) ;
// else
,
select_string = select_string || " | " ||
":" || colnames[i] || " == " || char(ICDcodes[j]);
);
);
);
select_string = "dt << select where(" || select_string || ")";
eval(parse(select_string));
print(select_string);
// Create a subset table with GA <32 weeks.
dt << Subset( Output Table( tblname ), Selected Rows( 1 ), selected columns( 0 ) );
dt2 = data table(tblname);
dt2 << save();
//dt << clear select;답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.
To select a row without deselecting a previously selected row, combine << Select Where with
<< Select Where and the current selection("extend") argument. This is an alternative to
using an OR statement.
dt << Select Where( age == 14 );
dt << Select Where( sex == "F", current selection("extend"));
미샤프,
당신이 보여주는 구문이 어디서 왔는지 잘 모르겠습니다.JMP 12.1 스크립팅 가이드와 현재 온라인 문서에는 위와 같이 올바른 텍스트가 있습니다.
감사해요.
웬디
답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.스크립팅 가이드에서 이 내용을 업데이트할 수 있나요?
//스크립팅 가이드 페이지 336
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << 선택 위치( age < 15 & sex == "F" );
//또는
dt << 선택 위치( age == 14 );
dt << 확장 선택 Where( sex == "F" ); //아무것도 하지 않습니다
잠깐(10);
dt << Select Where( sex == "F", 현재 선택 ("확장")); //선택 확장
답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.JMP 12에서는 현재 선택 항목을 확장, 제한 또는 지울지 여부를 지정할 수 있는 Select Where()에 대한 새로운 옵션을 제공합니다. 구문은 다음과 같습니다.
dt << Select Where( condition, );
다음 예에서는 현재 선택 영역을 확장하는 방법을 보여줍니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :Age == 14 );
Wait( 1 ); //For demonstration purposes
dt << Select Where(
:sex == "M",
Current Selection( "extend" )
);
도움이 되었기를 바랍니다!
웬디
답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.For 루프는 where 절보다 빠르지는 않지만 빠르지만 "For Each Row"는 엄청나게 느립니다. 대신 For (i=1,i<=NRows(dt),,i++를 사용하십시오.
답: 위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.거의 똑같은 문제에 대한 해결책을 찾고 있었는데, 정말 간단합니다.왜 이전에 그것을 평가하기 위해 텍스트 문자열을 만들 생각을 하지 않았는지 잘 모르겠습니다...
위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.감사합니다!문자 및 숫자 열이 약간 까다로웠지만 작동하고 있으며 제가 있었던 것보다 속도가 크게 향상되었습니다.
위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.SELECT WHERE를 한 번에 수행하는 것이 더 효율적일 수 있습니다.나는 항상 동적 선택 문을 작성한 다음 eval(parse())을 사용하여 실행합니다.다음은 한 번에 선택을 수행하도록 수정된 MS의 예입니다.
dt = 열려 있는 ( "$ENGLISH_SAMPLE_DATA/빅클래스.jmp" ) ;
이름 = { "나이" , "키" , "무게" } ;
cspec = { 15 , 62 , 104 } ;
select_string = "" ;
을 위한 ( 나 = 1 , 나 <= N개 품목 ( 이름 ) , 나 ++,
만약에 ( select_string == "" ,
// 그 다음에
select_string = ":" || 이름 [ 나 ] || " == " || 숯 ( cspec [ 나 ]) ;
// 또 다른
,
select_string = select_string || " & " ||
":" || 이름 [ 나 ] || " == " || 숯 ( cspec [ 나 ]) ;
) ;
) ;
select_string = "dt << 어디를 선택하세요(" || select_string || ")" ;
평가 ( 분석하다 ( select_string )) ;
인쇄 ( select_string ) ;
위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.감사합니다. 도움이 될 것입니다. 나는 이 문제를 해결하기 위해 "각 행에 대해" 작업을 수행했고 이로 인해 성능이 저하되었습니다. 귀하의 제안이 작업 속도를 높여줄 것입니다.
위치 선택: JSL의 현재 선택 항목에서 선택해야 합니다.Select Where() 조건의 일부로 현재 선택된 행 목록을 사용할 수 있습니다. 목록은 아래 예와 같이 반복할 때마다 업데이트될 수 있습니다.
dt = 열려 있는 ( "$ENGLISH_SAMPLE_DATA/빅클래스.jmp" ) ;
이름 = { "나이" , "키" , "무게" } ;
cspec = { 15 , 62 , 100 } ;
dt << 모든 행 선택 ;
을 위한 ( 나 = 1 , 나 <= N개 품목 ( 이름 ) , 나 ++,
selected_rows = dt << 선택한 행 가져오기 ;
dt << 어디를 선택하세요 (
그리고 (
열로 ( 이름 [ 나 ] )[] < cspec [ 나 ] ,
포함 ( selected_rows , 열 () ) > 0 )
)
) ;