Establecer varias filas en una sola columna en un solo valorHola,
Pregunta de novato...
Tengo una columna con un identificador único (UID) para ciertos tipos de objetos, por ejemplo, {'gatos', 'perros', 'pájaros'}. Cada UID tiene varias filas asociadas, que he capturado en una matriz asociativa.
Ejemplo: aa = { 'gatos' => [1, 2, 3], 'perros' => [4, 5, 6], 'pájaros' => [7, 8, 9] }
Para cada UID, todas las filas asociadas, necesito establecer una columna diferente (col2) en un solo valor.
Por ejemplo: para UID 'gatos', las filas 1, 2 y 3, en col2, deben establecerse en 'le gusta la siesta'.
- Conozco la función << Establecer todos los valores, pero eso copia un solo valor para todas las filas en una columna.
- Si uso dt:col 2[ aa[ 'cats' ] ] = 'likes siesta', se producirá un error de valor L, que me informa que necesito una matriz de valores igual a las filas de números, para que se pueda asignar cada fila ese valor
- O bien, puedo usar un bucle for anidado en un bucle for para asignar valores donde los necesito.
Sin embargo, todo esto parece torpe. Debe haber una mejor manera.
Aquí están las 2 matrices asociativas:
- { UID => [filas] }
- { UID => valor }

Automatización y secuencias de comandosAnálisis y modelado de datos básicosOrganización de contenidoAcceso a los datosventanasRe: Establecer múltiples filas en una sola columna a un solo valorAl hacer esta publicación, olvidé agregar otra posibilidad. Nota: este conjunto de datos tiene muchas filas.
// This completely removes the need to store rows in an AA, but takes a decent amount of time
for( i = 1, N rows( dt ), i++,
row_UID = dt:UID[i];
dt:col2[i] = aa_value[row_UID];
);Re: Establecer múltiples filas en una sola columna a un solo valorUse la indexación de tablas de datos como esta

Subíndice de tabla de datos
Re: Establecer múltiples filas en una sola columna a un solo valorUsaría las capacidades de manipulación de tablas de JMP para esta operación
Names Default To Here( 1 );
animals = {"cats", "dogs", "birds"};
dt = New Table( "lots of animals",
add rows( 100 ),
New Column( "UID",
character,
set each value( animals[Random Integer( 1, 3 )] )
)
);
// Build the attribute table
dtLookup = new table("Lookup",
add rows(3),
new column("UID", character,
values({"cats", "dogs", "birds"})
),
new column("col2", character,
values({"likes napping","likes frisbee","likes cracker"})
)
);
// Update the table to expand all values into matching rows
Data Table( "lots of animals" ) << Update(
With( Data Table( "Lookup" ) ),
Match Columns( :UID = :UID )
);

Re: Establecer múltiples filas en una sola columna a un solo valor¡La subsección de la tabla de datos es tan genial!
¿Por qué la matriz asociativa?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myMatrix= dt<< getrowswhere(age==12);
dt[myMatrix,{age}]=999Re: Establecer múltiples filas en una sola columna a un solo valorSolo por la pregunta original, ¡pero las matrices asociativas también son geniales!
Re: Establecer múltiples filas en una sola columna a un solo valor@Craige_Hales , hay un hilo en algún lugar de este sitio que tiene este truco para subíndices. ¡Probablemente debería marcarlo como favorito debido a trucos como este!¡Gracias!
Re: Establecer múltiples filas en una sola columna a un solo valor@Craige_Hales , aquí hay un enlace a su hilo sobre suscripciones para aquellos que quieran saber más.
PD: ¡estos trucos pueden ahorrarte mucho tiempo! ¡Vale la pena leerlo al 100%!
https://community.jmp.com/t5/Uncharted/Data-table-subscripting/ba-p/21013