Wie kann die Verkettung der Schleifentabelle im Speicherarray abgeschlossen und die Datentabelle dann einmal generiert werden?Ich benutze "Big Class.jmp", um die Betriebsanforderungen zu erklären:
Ich folge dem Code, um zu vervollständigen, aber die Geschwindigkeit ist langsam.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula( If( Row() == dt[i, 6] + 1, 10, Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) ) ) );
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = Current Data Table(),
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
d1 << Close Window;
);
);
1. Erstellen Sie eine neue Spalte "Test", um "Gewicht" - "Größe" zu berechnen.
2. Generieren Sie die neue Tabelle gemäß den folgenden Anforderungen und verbinden Sie sie mit der ersten generierten neuen Tabelle:
Jedes neue Formular hat drei Spalten: "Name", "Schritt" und "Ebene". Die Anzahl der Zeilen in der neuen Tabelle ist der "Test" -Wert jedes Namens, der im ersten Schritt erhalten wurde
Die Spalte "Schritt" sind die Daten, die mit "Höhe" beginnen und für jede Zeile nach unten bis zur Zeile "Gewicht" um 1 erhöht werden
Spalte "Ebene": Teilen Sie diese Zeilen gleichmäßig in 10 Segmente von klein bis groß auf. Die Anzahl der Zeilen pro Absatz kann variieren.
3. Verbinden Sie den Tisch einzeln mit einem Tisch.

Wie kann die Verkettung der Schleifentabelle im Speicherarray abgeschlossen und die Datentabelle dann einmal generiert werden?
Vielen Dank Experten!
Betreff: Wie kann die Verkettung der Schleifentabelle im Speicherarray abgeschlossen und die Datentabelle dann einmal generiert werden?Anstatt Ihren Code in Schritte ändern zu müssen, die nur Speichervariablen und Matrizen verwenden, nutzt meine nachstehende Änderung die Option "Privat" für Datentabellen. Damit können Datentabellen erstellt werden, die nicht angezeigt werden können. Auf diese Weise entfällt der gesamte Aufwand für die Erstellung der Objekte, die für die Anzeige erforderlich sind. Mein Code hat die Verarbeitungszeit um mindestens die Hälfte reduziert.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
private,
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula(
If( Row() == dt[i, 6] + 1,
10,
Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) )
)
);
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = d1,
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close(d1, nosave);
);
);
dtFinal = d2 << subset( selected rows( 0 ), selected columns( 0 ) );<BR />Close(d2,nosave);
Informationen zur Option "Privat" finden Sie im Skripthandbuch
Betreff: Wie kann die Verkettung der Schleifentabelle im Speicherarray abgeschlossen und die Datentabelle dann einmal generiert werden?Privat,
Danke Jim!