Sélectionnez Où aux datesJ'essaie de créer un sous-ensemble d'un ensemble de données.Je souhaite sélectionner les dates en dehors de mes dates de début et de fin pour analyse, puis exclure ces dates.Je ne sais pas pourquoi cela ne fonctionne pas, cela semble facile.Je pense que c'est un problème de format de nombre ?
J'ai StartDate et EndDate comme dates de CalendarBox()
:Date est une colonne avec des dates numériques au format m/d/y.
J'ai essayé ceci sans succès :
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < Informat(StartDate) |:Date > Informat(EndDate))<<EXCLUDE></EXCLUDE>
Pour vérifier les colonnes, j'ai essayé ceci (ci-dessous) mais je n'ai pas obtenu de résultat.Juste ".
BegTime <<NEW column=""></NEW>
Re : Sélectionner où aux datesJe pense que votre problème est que vous pensez que StartDate et EndDate sont des dates numériques.De la façon dont vous avez construit votre code, StartDate et EndDate sont des pointeurs vers des objets.Vous devez extraire les valeurs de date des objets et les placer dans les variables de votre choix.De plus, votre utilisation d'une fenêtre modale ne permettra aucun traitement, comme par exemple le paramétrage de la plage de choix pour les dates à choisir.J'ai donc également supprimé cette restriction.Donc, si vous suivez la logique du script ci-dessous, vous verrez comment gérer le contrôle du traitement sans utiliser les fenêtres modales.
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 )
);Re : Sélectionner où aux dates:Date est définitivement une valeur en secondes à partir du 01JAN1904. Si je supprime le formatage "m/d/y", c'est un numéro similaire aux numéros CalendarBox().
Cependant, je ne peux même pas soustraire ces chiffres les uns des autres.très confus?
Re : Sélectionner où aux datesOui, ça ne marche pas. Est-il possible que mes valeurs :Date ne soient pas les mêmes que celles de ma boîte de calendrier JMP() ?
Voici comment je calcule : 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 sont des caractères au format 01:28:2018::02:14:08:099
StartDate et EndDate proviennent de ceci :
new window("Start Date of Data",<<MODAL></MODAL>Re : Sélectionner où aux datesJe suppose que vous avez affaire à des données de date qui sont des valeurs de date JMP (valeurs numériques, nombre de secondes depuis le 1er janvier 1904).Compte tenu de cela, il n’est pas nécessaire de les convertir en une valeur autre qu’une valeur numérique.Par conséquent, ce qui suit devrait fonctionner
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < StartDate |:Date > EndDate)<<EXCLUDE></EXCLUDE>