So verwenden Sie die Formel Zeile für Zeile, um die dynamische Änderung der Gesamtzahl der Spalten zu finden.So verwenden Sie die Formel Zeile für Zeile, um die dynamische Änderung der Gesamtzahl der Spalten zu finden.
Wie Einstellung:
Die Zahl a ist die Anzahl der Startspaltenpositionen, die summiert werden müssen
Die Zahl b ist die Gesamtzahl der Spalten, die summiert werden müssen
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
dt << New Column( "test", formula( As Column( 6 ) + As Column( 7 ) + As Column( 8 ) + As Column( 9 ) ) );
dt << run formulas;
Column( "test" ) << deleteFormula;
Wie zum Beispiel:
A = 6;
B = 4;
Suchen Sie die Summe der Spalten 6, 7, 8 und 9 in der neuen Spalte "Text" (beginnend mit Spalte a, Summe Spalte b).
Vielen Dank!

Betreff: Wie man die Formel Zeile für Zeile verwendet, um die dynamische Änderung der Gesamtzahl der Spalten zu finden.Danke, markbailey!
https://community.jmp.com/t5/Discussions/How-to-SUM-rows-with-variable-column-names/mp/9817
Als ich diesen Beitrag sah, versuchte ich auch diese Methode, aber um die Anzahl der Textformatspalten zu bestimmen.
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
a = 4;//has 2 text format columns.
b = 4;
m = (dt << get as matrix)[0, Index( a, a + b - 1 )];
s = (V Sum( m` ))`;
dt << New Column( "test", Numeric, Continuous, Values( s ) );
Betreff: Wie man die Formel Zeile für Zeile verwendet, um die dynamische Änderung der Gesamtzahl der Spalten zu finden.Diese Situation ist seltsam. Dieses Skript erstellt die Formel:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
col = dt << New Column( "test" );
lo = 6;
hi = 9;
f = Expr( Add() );
For( c = lo, c <= hi, c++,
r = (dt << Get Column Reference( Eval List( { Column( dt, c ) << Get Name } ) ))[1];
Insert Into( f, r );
);
Eval(
Substitute(
Expr( col << Set Formula( fff ) ),
Expr( fff ),
Name Expr( f )
)
);
Aber es wird nicht bewertet. Es funktioniert aber, wenn ich mir die Vorschau im Formeleditor anschaue.

Wie auch immer, warum eine Formel verwenden, wenn Sie nicht wollen?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
col = dt << New Column( "test" );
lo = 6;
hi = 9;
sum = J( N Row( dt ), 1, 0 );
For( c = lo, c <= hi, c++,
sum += Column( dt, c ) << Get As Matrix;
);
col << Set Values( sum );
Betreff: Wie man die Formel Zeile für Zeile verwendet, um die dynamische Änderung der Gesamtzahl der Spalten zu finden.
a=6;b=4;
dt = Current Data Table();
dt<<NEW column=""></NEW>
Sieht so aus, als würde es sich um die Brute-Force-Form einer Zeile-für-Zeile-Schleife handeln, oder?