Impostazione di più righe in una singola colonna su un singolo valoreCiao,
Domanda da niubbo...
Ho una colonna con un identificatore univoco (UID) per determinati tipi di oggetti, ad esempio {'cats', 'dogs', 'birds'}. Ogni UID ha più righe ad esso associate, che ho catturato in un array associativo.
Esempio: aa = { 'gatti' => [1, 2, 3], 'cani' => [4, 5, 6], 'uccelli' => [7, 8, 9] }
Per ogni UID, tutte le righe associate, devo impostare una colonna diversa (col2) su un singolo valore.
Ad esempio: per UID 'cats', le righe 1, 2 e 3, in col2, devono essere impostate su 'likes napping'.
- Conosco la funzione << Imposta tutti i valori, ma copia un singolo valore per tutte le righe in una colonna.
- Se uso dt:col 2[ aa[ 'cats' ] ] = 'likes napping', si verificherà un errore di valore L, che mi informa che ho bisogno di una matrice di valori uguale al numero di righe, quindi ogni riga può essere assegnata quel valore.
- Oppure, posso usare un ciclo for nidificato in un ciclo for per assegnare valori dove mi serve.
Tutto questo sembra goffo però. Ci deve essere un modo migliore.
Ecco i 2 array associativi:
- {UID => [righe]}
- {UID => valore}

Automazione e scriptingAnalisi e modellazione dei dati di baseOrganizzazione dei contenutiAccesso ai datifinestreRi: Impostare più righe in una singola colonna su un singolo valoreDurante la creazione di questo post, ho dimenticato di aggiungere un'altra possibilità. Nota: questo set di dati ha molte righe.
// 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];
);Ri: Impostare più righe in una singola colonna su un singolo valoreUtilizzare l'indicizzazione della tabella dati in questo modo

Abbonamento tabella dati
Ri: Impostare più righe in una singola colonna su un singolo valoreUserei le capacità di manipolazione della tabella di JMP per questa operazione
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 )
);

Ri: Impostare più righe in una singola colonna su un singolo valoreIl substripping della tabella dei dati è davvero fantastico!
perché l'array associativo?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myMatrix= dt<< getrowswhere(age==12);
dt[myMatrix,{age}]=999Ri: Impostare più righe in una singola colonna su un singolo valoreSolo a causa della domanda originale, ma anche gli array associativi sono fantastici!
Ri: Impostare più righe in una singola colonna su un singolo valore@Craige_Hales , c'è un thread da qualche parte su questo sito che ha questo trucco per l'abbonamento. Probabilmente dovrei aggiungerlo ai segnalibri a causa di trucchi come questo!Grazie!
Ri: Impostare più righe in una singola colonna su un singolo valore@Craige_Hales , ecco un link al tuo thread sull'abbonamento per coloro che vogliono saperne di più.
PS: questi trucchi possono farti risparmiare un sacco di tempo! Vale la pena leggerlo al 100%!
https://community.jmp.com/t5/Uncharted/Data-table-subscripting/ba-p/21013