Seleziona Dove nelle dateSto cercando di creare un sottoinsieme di un set di dati.Voglio selezionare le date al di fuori delle mie date di inizio e di fine per l'analisi, quindi escludere tali date.Non sono sicuro del motivo per cui non funziona, sembra facile.Penso che siano problemi di formato numerico?
Ho StartDate e EndDate come date da CalendarBox()
:Date è una colonna con date numeriche nel formato m/g/a.
Ho provato questo senza successo:
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < Informat(StartDate) |:Date > Informat(EndDate))<<EXCLUDE></EXCLUDE>
Per controllare le colonne ho provato questo (sotto) ma non ho ottenuto un risultato.Solo ".
BegTime <<NEW column=""></NEW>
Ri: Seleziona Dove nelle datePenso che il tuo problema sia che stai pensando che StartDate e EndDate siano date numeriche.Il modo in cui hai costruito il tuo codice, StartDate e EndDate sono puntatori a oggetti.Devi estrarre i valori di data dagli oggetti e inserirli in variabili di tua scelta.Inoltre, l'utilizzo di una finestra modale non consentirà l'esecuzione di alcuna elaborazione, come l'impostazione dell'intervallo delle scelte per le date tra cui scegliere.Quindi ho rimosso anche quella restrizione.Quindi, se segui la logica dello script di seguito, vedrai come gestire il controllo dell'elaborazione senza utilizzare le finestre modali.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Time Series\Raleigh Temps.jmp" );
dt << clear row states;
startNW = New Window( "Start Date of Data",
StartDate = Calendar Box(),
Button Box( "OK",
startNW << close window;
runEndDate;
)
);
StartDate << Max Date( Col Max( :name( "Month/Year" ) ) ) << Min Date( Col Min( :Name( "Month/Year" ) ) );
StartDate << Set Function( Function( {this, date}, theStartDate = StartDate << Get Date ) );
runEndDate = Expr(
endNW = New Window( "End Date of Data",
EndDate = Calendar Box(),
Button Box( "OK",
endNW << close window;
runSelect;
)
);
endDate << Max Date( Col Max( :name( "Month/Year" ) ) ) << Min Date( Col Min( :Name( "Month/Year" ) ) );
EndDate << Set Function( Function( {this, date}, theEndDate = endDate << Get Date ) );
);
runSelect = Expr(
dt << select where( :Name( "Month/Year" ) < theStartDate | :Name( "Month/Year" ) > theEndDate )
);Ri: Seleziona Dove nelle date:Date è sicuramente un valore in secondi dal 01JAN1904. Se rimuovo la formattazione "m/d/y", è un numero simile ai numeri di CalendarBox().
Non riesco nemmeno a sottrarre questi numeri l'uno dall'altro però.molto confuso?
Ri: Seleziona Dove nelle dateSì, non funziona. È possibile che i miei valori :Date non siano gli stessi dei miei valori JMP calendar box()?
Ecco come sto calcolando :Date
dt<< new column ("Date", numeric, continuous, format("m/d/y"), formula(
Date MDY(
Num( Substr( :TimeStamp, 1, 2 ) ),
Num( Substr( :TimeStamp, 4, 2 ) ),
Num( Substr( :TimeStamp, 7, 4 ) ) )
));
:TimeStamp sono caratteri nel formato 01:28:2018::02:14:08:099
StartDate e EndDate provengono da questo:
new window("Start Date of Data",<<MODAL></MODAL>Ri: Seleziona Dove nelle datePresumo che tu abbia a che fare con dati di data che sono valori di data JMP (valori numerici, il numero di secondi dal 1 gennaio 1904).Detto questo, non è necessario convertirli in un valore diverso da un valore numerico.Pertanto il seguente dovrebbe funzionare
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < StartDate |:Date > EndDate)<<EXCLUDE></EXCLUDE>