사용자 입력 시작 날짜 주변의 행 범위 선택저는 "ID" 및 "Test_date" 라는 두 개의 열로 단순화할 수 있는 수년에 걸친 대규모 데이터 세트로 작업하고 있습니다. 날짜 형식은 'm/d/y'로 지정되며 데이터 테이블은 시간순으로 정렬됩니다. 테스트 날짜가 사용자가 지정한 Test_date로부터 1년(이전 또는 이후) 이내인 모든 행을 선택한 다음 데이터 테이블에서 다른 모든 행을 삭제하고 싶습니다.
아래는 내가 지금까지 시도한 것입니다. 입력 ID에 대한 상한 및 하한 날짜 제한을 만들었지만 select where()를 사용하여 해당 범위 내에서 날짜를 선택할 수 없습니다. 대신 "SelectWhere에 대한 인수가 true 또는 false로 평가되지 않았습니다. [0]입니다..."라는 오류가 발생합니다. ". 이에 대한 도움을 주시면 감사하겠습니다.
dt << current data table();
dt << new column("T_YEAR", numeric, continuous, set each value(:Test_date / (365*86400)));
setpoint = ;//user specified numeric value
set_row= dt << get rows where(:ID == setpoint);
set_date = dt:T_YEAR[set_row] ;
set_min = (set_date - 1);
set_max = (set_date + 1);
dt << select where(:T_YEAR >= set_min & :T_YEAR <= set_max )
<< invert row selection
<< delete rows;Re: 사용자 입력 시작 날짜 주변의 행 범위 선택@굽은 , 당신의 답장과 내 답장이 겹친 것 같습니다.
이것은 나를 위해 작동합니다.
dt=open("$SAMPLE_DATA\TechStock.jmp");
set_date=datemdy(12, 15, 2000);
set_min = (set_date - In Days(5));
set_max = (set_date + In Days(5));
dt << select where(:Date >= set_min & :Date <= set_max )
<< invert row selection
<< delete rows;
샘플 데이터에 1년 이상이 포함되어 있지 않기 때문에 년 대신 In Days()로 변경해야 했지만 그 외에는 이것이 당신에게 효과적일 것입니다.
Re: 사용자 입력 시작 날짜 주변의 행 범위 선택많은 방법이 있습니다.
당신은 사용할 수 있습니다 몇년에 걸쳐() 몇 년 동안 JMP 날짜/시간 값을 반환하는 함수 또는 날짜 증분() 년 수를 더하거나 빼는 함수.
또한, 당신은 얻을 수 있습니다 년도() 설정된 날짜에 1을 더하고 사용하십시오. 날짜 MDY() JMP 날짜 값을 제공하는 함수입니다.
set_min = (set_date - In Years(1));
set_max = (set_date + In Years(1));
//or
set_min = Date Increment(set_date, "Year", -1, "actual");
set_max = Date Increment(set_date, "Year", 1, "actual");
//or
set_min = Date MDY( Month( set_date ), Day( set_date ), Year( set_date ) - 1 );
set_max = Date MDY( Month( set_date ), Day( set_date ), Year( set_date ) + 1 );
Re: 사용자 입력 시작 날짜 주변의 행 범위 선택예, 그것은 본질적으로 Test_date/(365*86400)를 사용하여 날짜를 연도로 변환한 새 열 "T_YEAR"를 생성하여 수행한 작업입니다. 나는 둘 다 시도했고 어느 쪽이든 작동합니다. 이 문제는 select where()에서 set_min 및 set_max 변수를 사용하여 해당 값 사이의 모든 행을 찾을 때 발생하는 것 같습니다.
Re: 사용자 입력 시작 날짜 주변의 행 범위 선택날짜/시간은 초 단위이므로 다음과 같이 하면 됩니다.
set_min = (set_date - (1 * 365 * 24 * 3600));
set_max = (set_date + (1 * 365 * 24 * 3600));