Hallo JMP-Community, ich suche nach einer Lösung, um das mehrfache Kopieren einer Spalte auf einmal zu erleichtern (im Beispiel unten habe ich 6 Mal gewählt), aber alle Daten sollten mit jeder neu kopierten Spalte eine Zeile nach unten verschoben werden erstellt? Ich danke Ihnen für Ihre Hilfe!

Sie haben bereits zwei gute Lösungen (und eine als Lösung markiert), aber es gibt noch eine andere schnelle interaktive Möglichkeit, dies zu tun, die die Leute manchmal vergessen. Wählen Sie die Originalspalte aus und klicken Sie mit der rechten Maustaste auf die Spaltenüberschrift und wählen Sie „Neue Spaltenformel“ > „Zeile“ > „Lag Multiple“. Geben Sie im Dialog die erste Verzögerung als 1 und die letzte Verzögerung als 6 ein.
Ich bin einverstanden mit @julianisch Ich verstehe nicht, warum Sie einen solchen Bedarf haben, aber im Folgenden finden Sie die Schritte, mit denen Sie dies interaktiv tun können.
- Kopieren Sie alle Werte aus Spalte 1 in den Einfügepuffer.
- Klicken Sie mit der rechten Maustaste auf eine der Zeilen in der Rowstate-Spalte (die Spalte mit den Zeilennummern) und wählen Sie „Zeilen hinzufügen“
- Wählen Sie im Dialogfeld „Zeilen hinzufügen“ sechs Zeilen aus, die am Ende hinzugefügt werden sollen.
- Gehen Sie zur leeren Spaltenüberschrift neben der Überschrift der ersten Spalte, klicken Sie mit der rechten Maustaste und wählen Sie „Neue Spalten“.
- Geben Sie im Dialogfeld „Neue Spalten“ an, dass Sie 6 Spalten hinzufügen möchten
- Sobald die Spalten erstellt sind, gehen Sie zur zweiten Zelle in der ersten neuen Spalte und fügen Sie die Werte aus dem Einfügepuffer in die Zelle ein.Es werden alle Daten ab Zelle (Zeile) 2 kopiert.
- Wiederholen Sie dies für jede neue Spalte und gehen Sie dabei für jede neue Spalte eine Zeile nach unten.
Hallo @WernerL ,
Nachfolgend finden Sie Code dafür (Schreiben von Werten oder Spaltenformeln). Aber darf ich fragen, warum Sie eine solche Tabelle erstellen müssen? Wenn Sie einige Vorgänge zeilenweise mit einem Wert in einer vorherigen Zeile aus einer vorherigen Spalte ausführen müssen, gibt es effizientere Möglichkeiten als die explizite Erstellung dieser Verzögerungsspalten.
Dieses Formular schreibt Werte:
dt = Open("$SAMPLE_DATA\Big Class.jmp");
baseCol = Column("height");
nCopies = 6;
For( i = 1, i <= nCopies, i++,
spacerMat = J( i, 1, . );
valuesMat = spacerMat |/ Eval( baseCol << Get Values );
New Column( "Copy " || char(i), Numeric, "Continuous", Set Values( valuesMat ) );
);
Dieses Formular schreibt Spaltenformeln:
dt = Open("$SAMPLE_DATA\Big Class.jmp");
baseCol = Column("height");
nCopies = 6;
For( i = 1, i <= nCopies, i++,
Eval(Substitute( Expr( New Column( "Copy " || Char( i ), Numeric, "Continuous", Formula( Lag( Subscript(xxCol,row()), i ) ) ) ), Expr( i ), i, expr(xxCol), baseCol ))
);
Ich hoffe, das hilft Ihnen beim Einstieg!
@julianisch
//Edit 24.11.19: Es wurde eine Korrektur an der Spaltenformelversion vorgenommen, um die am Anfang des Skripts definierte Spalte korrekt in die Spaltenformel zu ersetzen