Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas en otra columnaHola, soy un principiante de JSL. Necesito aprender cómo mover un bloque de celdas en una columna a una ubicación diferente en una columna diferente recién creada.En este caso, encima de esta nueva columna.
Específicamente, necesito seleccionar un conjunto de celdas en la columna THK marcada como PRE en una columna PRE/POST separada y pegarlas en la parte superior de una nueva columna marcada como THK PRE. Es algo similar a la función Dividir columna, pero no quiero usar la función Dividir columna porque encuentro que, debido a alguna falla, los datos a veces aparecen codificados en la columna recién creada si faltan los datos en algunas celdas de la columna THK.
A partir de algunos ejemplos en los foros, armé el código a continuación, pero no pega ningún valor en la columna THK PRE recién creada.¡Por favor ayuda!Muchas gracias de antemano.
Esto es lo que necesito:
Tabla de datos iniciales
GRACIAS ANTES/POST
9.5 POSTE
9.8 POST
10.1 ENVÍO
11.0 ANTERIOR
11.4 PRE
10.9 PRE
Así es como necesito que se vea la tabla de datos después de esta operación:
THK | PRE/POST | GRACIAS PRE
9.5 POST 11.0
9.8 POST 11.4
10.1 POST 10.9
11.0 ANTERIOR
11.4 PRE
10.9 PRE
El siguiente script no pega ningún valor en la columna recién creada, la columna permanece vacía
// Pick the source data table
dt=Open("Data Table");
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous");
Wait(1);
// Select PRE values from THK column
vals = Column(dt, "THK") << Get Rows Where(:Name("PRE/POST") == "PRE");
// Put these in the new column THK PRE
Column(dt, "THK PRE") << Set Values(vals)
¡Por favor ayuda! Muchas gracias de antemano.Yo uso JUMP 16.0.0
@jthi
Fusión y limpieza de datosRe: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas en otra columnaHola Txnelson, ¡muchas gracias por la rápida respuesta!¡Funciona de maravilla!Supongo que estaba bastante cerca, pero no pude entender nuestra sintaxis.
Re: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas en otra columnaAquí hay una revisión de su secuencia de comandos con algunas anotaciones adicionales que manejan lo que desea
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous" );
Wait( 0 );
// Find the rows PRE values from THK column
// and copy those values from the found rows
// to the vals matrix
vals = :THK[dt << get rows Where( :Name( "PRE/POST" ) == "PRE" )];
// Put these in the new column THK PRE
dt:THK PRE << Set Values( vals );Re: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas de otra columna¿Hay alguna manera de pegar los datos seleccionados en una nueva columna en la misma posición de fila? ¿O establecer los valores de una nueva columna según la selección? ¿Algo como esto?

Re: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas de otra columnaAquí hay un par de maneras de hacer lo que quieras.
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE1",
Numeric,
"Continuous",
formula( If( :"PRE/POST"n == "PRE", :THK, . ) )
);
dt << New Column( "THK PRE2", Numeric, "Continuous" );
For Each Row(
If( :"PRE/POST"n == "PRE",
:THK PRE2 = :THK,
:THK PRE2 = .
)
);
Si desea que el valor THK PRE sea 5 como se ilustra en el segundo ejemplo, simplemente cambie el valor resultante de :THK a 5.
Re: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas de otra columnaAgradezco la respuesta. Esperaba que hubiera una función de script para "pegar" que no conocía. Parece que tendré que recorrer cada fila como sugirió si la columna ya contiene otros valores.
Re: Copiar celdas seleccionadas de una columna y pegarlas en celdas seleccionadas de otra columnaUn poco más cerca de copiar/pegar: puedes obtener y escribir por lotes todos los valores a la vez:
Subíndice de tabla de datos
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 100 ),
New Column( "input",
Set each Value( random uniform () )
),
New Column( "variant",
Character,
set each value({"A","B"}[random integer(1,2)])
)
);
dt << New Column( "out");
rows= Where(:variant == "A");
vals = dt[rows,"input"];
dt[rows,"out"]=vals;
Esto es similar a
dt:THK PRE << Set Values( vals );
La diferencia: a través de la indexación de tablas de datos puedes especificar con precisión en qué filas escribir.
Los valores establecidos comienzan en la fila 1 y llenan tantas filas como valores haya en la matriz.