Namen sind standardmäßig hier ( 1 ); //Referenzstromtabelle dt1 = Aktuelle Datentabelle(); //Flag, um eine Reihe von Statusinformationen in die Protokolldatei auszugeben debug = 0; //Fensterbox, der gesamte Code befindet sich in dieser Box nw = New Window( "Custom Column Transformation", //Box zum Halten von Abstandshaltern auf der linken und rechten Seite der Daten H List Box ( //Abstandshalter auf der linken Seite des Fensters Spacer Box( Size( 12, 12) ), //Box für alle anderen Teile des Fensters V List Box( //Überschrift und Anweisungen Textbox( "Choose Transformation Settings " ), Spacer Box( Size( 12, 12 ) ), V List Box( Text Box( "Wegbeschreibung:" || "\!N1. Wählen Sie die zu transformierenden Spalten in der Datentabelle aus." || "\!N2. Geben Sie unten eine Formel ein oder wählen Sie ein Beispiel aus." || "\!N3. Wählen Sie einen Satz aus, der an jeden neuen Spaltennamen angehängt werden soll." || "\!N4. Drücke OK." || "\!N5. Wiederholen Sie 2-4 nach Bedarf." || "\!N6. Drücken Sie zum Beenden Schließen/Abbrechen."), Spacer Box( Size( 12, 12 ) ) ), //Optionsschaltflächen mit Beispielen, wenn ausgewählt, wird der Text im Formelbearbeitungsfeld geändert panelbox("Example Equations", rb1 = radio box({"Lag", "Change" , "Shuffle", "Date Dep", "Column Only", "Cos Oscillation", "Sin Oscillation", "10 day t score"}, one_rb = rb1 << ausgewählt werden; if (one_rb == "Lag", FormulaIn << set text("Lag(,1)");, one_rb == "Change", FormulaIn << set text(" - Lag(,1)");, one_rb == "Shuffle", FormulaIn << set text("Col Stored Value(, Col Shuffle())");, one_rb == "Date Dep", FormulaIn << set text("If( As Column( \!"Datum\!" ) < Datum DMY( 1, 1, 2016 )," || "\!N\!t / 10,\!N\!t\!N)");, one_rb == "Cos Oszillation", FormulaIn << set text("cos( * (2 * pi()) / Col Max( ) )");, one_rb == "Sin Oscillation", FormulaIn << set text( "sin( * (2 * pi()) / Col Max( ) )");, one_rb == "10 day t score", FormulaIn << set text("Lag( ( - Mittelwert( Lag( , 1 ), Lag( , 2 ), Lag( , 3 ), Lag( , 4 ), Lag( , 5 ), Lag( , 6 ), Lag( , 7 ), Lag( , 8 ), Lag( , 9 ), Lag( , 10 ) ) ) / Std Dev( Lag( , 1 ), Lag( , 2 ), Lag( , 3 ), Lag( , 4 ), Lag( , 5 ), Lag( , 6 ), Lag( , 7 ), Lag( , 8 ), Lag( , 9 ), Lag( , 10 ) ) ) )");, FormulaIn << set text( ""); ); ), ), //Formel-Bearbeitungsfeld mit Anweisungen Spacer Box( Size( 6, 6 ) ), V List Box( Text Box( "FORMULA\!NCerstellen Sie eine neue Spalte in der Datentabelle und kopieren Sie dann die Formel f rom " || "Der Formeleditor. Verwenden Sie dann bis zu 50 Mal, um anzugeben, wo die Spaltennamen " || "ersetzt werden sollen. Verweisen Sie auf andere Spalten mit As Column(\!"Column Name\!")." ), Spacer Box( Size( 12, 12 ) ), V List Box( FormulaIn = Text Edit Box( "Lag(,1)", <, , etc. //Variable zum Halten der Textzeichenfolge, die durch Spaltennamen ersetzt werden soll ReplaceTarget = " "; //Formel aus Textbox holen FormulaInput = FormulaIn << Text holen; //Spaltenbeschreibung aus Textbox holen DescInput = DescIn << Text holen; / /Debug-Informationen ausgeben if (debug == 1,Show( FormulaInput );Show( DescInput );Show( ColumnList );); // Anzahl der ausgewählten Spalten abrufen n = N Items ( ColumnList ); //für jede Spalte For( i = 1, i <= n, i++, //Datentyp der Spalte abrufen ColumnDataType = Column( ColumnList[i] ) << Datentyp abrufen; //Debug-Informationen ausgeben, wenn (debug == 1,Show( columnList[i] );Show( ColumnDataType );); //neue Variable für geänderte Formel erstellen FormulaComplete = FormulaInput; //TODO: Iteration beenden, wenn String nicht mehr gefunden wird oder nach einer großen Anzahl von Zyklen //ersetzen Spaltenreferenz für bis zu 50 Vorkommen (für große Formeln ändern) For( j = 1, j <= 50, j++, //Debug-Info ausgeben if (debug == 1,Show( FormulaComplete );Show( Contains( FormulaComplete, ReplaceTarget ) ); Show( Length( ReplaceTarget ) );); //wenn die Formel die Zielzeichenfolge enthält If( Contains( FormulaComplete, ReplaceTarget ) > 0, //das erste Vorkommen der Zielzeichenfolge ersetzen FormulaComplete = Eval( Munger( FormulaComplete, Contains( FormulaComplete, ReplaceTarget ), Length( ReplaceTarget ), "As Column(\!"" || Char( ColumnList[i] ) || "\!")" ) ) ); //Ende, wenn Formel Referenz enthält string ); //lo op für jedes Vorkommen der Referenzzeichenfolge //Debug-Informationen ausgeben if (debug == 1,Show( FormulaComplete );); //String erstellen, der den Ausdruck enthält, der die neue Spaltenreferenz erstellt newColExpr = Expr( dt1 << New Column( Char( ColumnList[i] ) || Char( DescInput ), Expr( ColumnDataType ), Formula( Eval( Parse( FormulaComplete ) ) ) ) ); // Debug-Info ausgeben if (debug == 1,Show( Eval Expr( newColExpr ) );); //Versuchen Sie, die neue Spaltenreferenz zu erstellen Try( Eval( Eval Expr( newColExpr ) ) ); //TODO: Prüfen, ob neue Spalte erstellt wurde und eine Formel enthält, Benutzer informieren //Debug-Info ausgeben if( debug == 1, Show( "done" );); ); //Jede ausgewählte Spalte durchlaufen ), //Ende der 'OK'-Befehlsschaltfläche //Schaltfläche zum Schließen des Fensters Button Box( "Close/Cancel", Show( "Closed" ); nw << Close Window; ) ), / /Ende der Box, um Befehlsschaltflächen zu halten //Abstandshalter am unteren Rand des Fensters Spacer Box( Size( 12, 12 ) ) ), //Ende der vertikalen Box mit allen Fensterinhalten außer linken und rechten Abstandshaltern //Abstandshalter auf der rechten Seite des Fensters Spacer Box (Size( 12, 12 ) ) // Ende der horizontalen Box für Abstandshalter auf der linken und rechten Seite); // Ende der Fensterbox