Wählen Sie Where on Dates ausIch versuche, eine Teilmenge eines Datensatzes zu erstellen.Ich möchte die Daten außerhalb meiner Start- und Enddaten für die Analyse auswählen und diese Daten dann ausschließen.Nicht sicher, warum dies nicht funktioniert, scheint einfach.Ich denke, es ist ein Problem mit dem Zahlenformat?
Ich habe StartDate und EndDate als Daten von CalendarBox()
:Date ist eine Spalte mit numerischen Datumsangaben im Format m/d/y.
Ich habe dies ohne Erfolg versucht:
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < Informat(StartDate) |:Date > Informat(EndDate))<<EXCLUDE></EXCLUDE>
Um die Spalten zu überprüfen, habe ich dies (unten) versucht, aber kein Ergebnis erhalten.Nur ".
BegTime <<NEW column=""></NEW>
Re: Wählen Sie Where on DatesIch denke, Ihr Problem ist, dass Sie denken, dass StartDate und EndDate numerische Daten sind.So wie Sie Ihren Code aufgebaut haben, sind StartDate und EndDate Zeiger auf Objekte.Sie müssen die Datumswerte aus den Objekten extrahieren und sie in Variablen Ihrer Wahl platzieren.Außerdem lässt Ihre Verwendung eines modalen Fensters keine Verarbeitung zu, wie z. B. die Einstellung des Auswahlbereichs für die Daten, aus denen Sie auswählen können.Also habe ich auch diese Einschränkung aufgehoben.Wenn Sie also der Logik des folgenden Skripts folgen, werden Sie sehen, wie Sie mit der Verarbeitungssteuerung umgehen, ohne modale Fenster zu verwenden.
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: Wählen Sie Where on Dates:Datum ist definitiv ein Wert in Sekunden ab 01.01.1904. Wenn ich die "m/d/y"-Formatierung entferne, ist es eine ähnliche Zahl wie die CalendarBox()-Zahlen.
Ich kann diese Zahlen nicht einmal voneinander subtrahieren.sehr verwirrt?
Re: Wählen Sie Where on DatesJa, das funktioniert nicht. Ist es möglich, dass meine :Date-Werte nicht mit den Werten meiner JMP-Kalenderbox() übereinstimmen?
So berechne ich :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 sind Zeichen im Format 01:28:2018::02:14:08:099
StartDate und EndDate stammen von:
new window("Start Date of Data",<<MODAL></MODAL>Re: Wählen Sie Where on DatesIch gehe davon aus, dass Sie es mit Datumsdaten zu tun haben, die JMP-Datumswerte sind (numerische Werte, die Anzahl der Sekunden seit dem 1. Januar 1904).Angesichts dessen besteht keine Notwendigkeit, sie in einen anderen Wert als einen numerischen Wert umzuwandeln.Daher sollte das Folgende funktionieren
BegTime = dt<< Subset(All rows, Selected columns only( 0 ) );
BegTime << Select Where(:Date < StartDate |:Date > EndDate)<<EXCLUDE></EXCLUDE>