Ich habe 2 Tische.
Tabelle 1: Zeitstempel (in 15-Minuten-Intervallen),i1,i2,i3,p1,p2,p3,p4,.... (182 Spalten)
Tabelle 2: Jahr, Monat, Datum, Startzeit, Endzeit (Startzeit und Endzeit haben das Format h:m am/pm)
Ich möchte alle 182 Spalten und nur die Zeilen in Tabelle1 auswählen, die zwischen StartTime und EndTime von Tabelle2 liegen, und eine Teilmenge erstellen.
Hinweis: StartTime und EndTime für jedes Datum in Tabelle 2 könnten irgendwo liegen – stimmen nicht genau mit dem Zeitstempel in Tabelle 1 überein. (oder mit anderen Worten: Start Time und End Time sind kein Vielfaches von 15)
Wie kann ich dies erreichen? 1) Mit der Point-and-Click-Methode – Like Joins – und mit „Row-Select where“. oder andere eingebaute Formeln ... Schritt für Schritt und 2) JSL
Hallo,
Wenn ich Ihre Frage verstehe, wäre die interaktive Aufführung weit mehr als eine Qual. Ich gehe davon aus, dass Sie eine Teilmenge der ursprünglichen Tabelle wünschen, wobei eine Zeile Teil der Teilmenge ist, solange sie zwischen der Anfangs- und Endzeit JEDER Zeile in der Anfangs-/Endtabelle liegt.
Wenn Sie das möchten, wird das folgende Skript dies tun. Es basiert auf der Funktion evalinsert( ), um eine Zeichenfolge in einem legitimen Datums-/Uhrzeitformat zu erstellen, die JMP mithilfe des Befehls informat( ) nativ in eine Zahl umwandeln kann. Schauen Sie sich also unbedingt diese beiden Funktionen im Skriptindex an.
Standardmäßig wird bei Auswahl von where ( ) die aktuelle Zeilenauswahl vorab gelöscht. Das optionale Argument aktuelle Auswahl („erweitern“) ermöglicht es uns, zusätzliche Zeilen auszuwählen, ohne die vorherige Auswahl zu verlieren – dies ermöglicht uns die Verwendung einer Schleife, um inkrementelle Auswahlen vorzunehmen.
Prost,
Brady
Names Default To Here(1);
////////////////////Build example tables
dt = astable(J(1000,1,randomuniform(today()-3600*24*60, today() + 3600*24*60)), << column names({"Timestamp"}));
dt:Timestamp << Input Format( "ddMonyyyy h:m:s", 0 ) << Format( "ddMonyyyy h:m:s", 22, 0 );
dt << Sort( By( :Timestamp ), Replace Table, Order( Ascending ) );
yearMat = J(20,1,2021);
monList = words("May,Jun,Jul,Aug,Sep",",")[J(20,1,randominteger(1,5))];
dayMat = J(20,1,randominteger(1,30));
amMat = J(20,1,7*3600 + randominteger(0,20)*60);
pmMat = J(20,1,16*3600 + randominteger(0,20)*60);
dt2 = new table("lookups",
<<NEW column=""></NEW>Tabelle 1: So habe ich 15-Minuten-Intervalldaten für das ganze Jahr.

Tabelle 2: Manchmal enthält diese Tabelle alle Daten im Monat. Hier im Beispiel sind es nur ein paar pro Monat.

Jim, lass es mich wissen, wenn das hilfreich ist.