estoy de acuerdo con @Julian en eso no entiendo por qué tiene tanta necesidad, pero a continuación se detallan los pasos que le permitirán hacerlo de forma interactiva.
- Copie todos los valores de la columna 1 en el búfer de pegado.
- Haga clic derecho en una de las filas en la columna de estado de fila (la columna con los números de fila) y seleccione "Agregar filas"
- En el cuadro de diálogo Agregar filas, seleccione 6 filas para agregar al final.
- Vaya al encabezado de columna vacío al lado del encabezado de la primera columna y haga clic derecho y seleccione "Nuevas columnas"
- En el cuadro de diálogo Nuevas columnas, especifique que desea agregar 6 columnas
- Una vez que se crean las columnas, vaya a la segunda celda en la primera columna nueva y pegue los valores del búfer de pegado en la celda. Copiará todos los datos comenzando en la celda (fila) 2.
- Repita esto para cada nueva columna, bajando una fila por cada nueva columna.
Ya tiene dos buenas soluciones (y una marcada como la solución), pero también hay otra forma interactiva rápida de hacer esto, que la gente a veces olvida. Seleccione la columna original y haga clic con el botón derecho en el encabezado de la columna eligiendo Nueva fórmula de columna> Fila> Retraso múltiple. En el cuadro de diálogo, coloque el primer retraso como 1 y el último retraso como 6.
Hola @WernerL ,
A continuación hay un código para hacerlo (escribiendo valores o fórmulas de columna), pero podría preguntar, ¿por qué necesita crear una tabla como esta? Si necesita realizar algunas operaciones en fila con un valor en una fila anterior de una columna anterior, hay formas más eficientes que crear explícitamente esas columnas de retraso.
Este formulario escribe valores:
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 ) );
);
Este formulario escribe fórmulas de columna:
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 ))
);
¡Espero que esto te ayude a comenzar!
@Julian
// Editar 24/11/19: se corrigió la versión de la fórmula de la columna para sustituir correctamente la columna definida al comienzo del script en la fórmula de la columna
Hola Comunidad JMP, estoy buscando una solución para copiar, de una sola vez, una columna varias veces (en el ejemplo a continuación he elegido 6 veces), pero todos los datos deberían moverse una fila hacia abajo con cada nueva columna copiada ¿creado? ¡Gracias por tu ayuda!