Festlegen mehrerer Zeilen in einer einzelnen Spalte auf einen einzelnen WertHallo,
Noob-Frage...
Ich habe eine Spalte mit einer eindeutigen Kennung (UID) für bestimmte Objekttypen, zum Beispiel {'cats', 'dogs', 'birds'}. Jeder UID sind mehrere Zeilen zugeordnet, die ich in einem assoziativen Array erfasst habe.
Beispiel: aa = { 'cats' => [1, 2, 3], 'dogs' => [4, 5, 6], 'birds' => [7, 8, 9] }
Für jede UID und alle zugehörigen Zeilen muss ich eine andere Spalte (col2) auf einen einzelnen Wert festlegen.
Beispiel: Für die UID „Katzen“ müssen die Zeilen 1, 2 und 3 in Spalte 2 auf „Liegt beim Nickerchen“ eingestellt werden.
- Ich kenne die Funktion << Alle Werte festlegen, aber diese kopiert einen einzelnen Wert für alle Zeilen in einer Spalte.
- Wenn ich dt:col 2[ aa[ 'cats' ] ] = 'likes napping' verwende, tritt ein L-Wert-Fehler auf, der mich darüber informiert, dass ich eine Wertematrix benötige, die der Anzahl der Zeilen entspricht, damit jede Zeile zugewiesen werden kann dieser Wert.
- Oder ich kann eine for-Schleife verwenden, die in einer for-Schleife verschachtelt ist, um Werte dort zuzuweisen, wo ich sie benötige.
Das alles scheint jedoch klobig zu sein. Es muss einen besseren Weg geben.
Hier sind die 2 assoziativen Arrays:
- { UID => [Zeilen] }
- { UID => Wert }

Automatisierung und SkripterstellungGrundlegende Datenanalyse und ModellierungInhaltsorganisationDatenzugriffWindowsBetreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzenBeim Verfassen dieses Beitrags habe ich vergessen, eine weitere Möglichkeit hinzuzufügen. Hinweis: Dieser Datensatz enthält viele Zeilen.
// 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];
);Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzenVerwenden Sie die Indizierung von Datentabellen wie folgt

Abonnieren der Datentabelle
Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzenFür diesen Vorgang würde ich die Tabellenmanipulationsfunktionen von JMP nutzen
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 )
);

Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzenDas Unterteilen von Datentabellen ist sooo cool!
Warum das assoziative Array?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myMatrix= dt<< getrowswhere(age==12);
dt[myMatrix,{age}]=999Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzenNur wegen der ursprünglichen Frage, aber assoziative Arrays sind auch cool!
Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzen@Craige_Hales , irgendwo auf dieser Seite gibt es einen Thread, der diesen Trick zum Abonnieren hat. Wegen solcher Tricks sollte ich es wahrscheinlich in meinen Lesezeichen speichern!Danke schön!
Betreff: Mehrere Zeilen in einer einzelnen Spalte auf einen einzelnen Wert setzen@Craige_Hales , hier ist ein Link zu Ihrem Thread zum Abonnieren für diejenigen, die mehr wissen möchten.
PS: Mit diesen Tricks können Sie jede Menge Zeit sparen! Es lohnt sich zu 100%, es zu lesen!
https://community.jmp.com/t5/Uncharted/Data-table-subscripting/ba-p/21013