Anwenden einer Funktion auf ein mehrdimensionales Array mit einer Gruppierungsvariablen

8

Ich habe, was ich dachte, wäre ein einfaches Problem, aber ich war nicht in der Lage, eine angemessene Antwort zu finden. Ich habe ein mehrdimensionales Array v[x,y,z] und ich möchte eine Funktion auf das Array entlang der z Dimension mit einer Gruppierungsvariablen (Gruppe) anwenden. Hier ist ein Beispiel (in R):

%Vor%

Da die Gruppierungsvariable drei Ebenen hat ( a , b und c ), ist das Ergebnis ( out ) Ich suche ein Array von Dimension 3x3x3. Ich kann mit dem folgenden Code für das obige Beispiel erhalten:

%Vor%

Meine Frage ist, ob es ein allgemeines Mittel gibt, das obige Ergebnis zu erhalten, das auf großdimensionale Arrays und lange Gruppierungsvektoren angewendet werden kann.

    
Arhopala 21.04.2013, 20:29
quelle

3 Antworten

6

Einfach:

%Vor%

Aber um die Daten in der exakt gleichen Reihenfolge zu erhalten:

%Vor%     
flodel 21.04.2013 21:55
quelle
5

Die Verwendung des Paketrasters eignet sich möglicherweise besser für Ihre Anforderungen. Es verfügt über einen Code, der für die Verarbeitung von Fernerkundungsdaten optimiert ist, wobei auf die Verarbeitung in Blöcken geachtet wird. Betrachten Sie dieses Beispiel:

%Vor%

Gibt einen Raster-Brick mit vier Layern zurück (ein Mittelwert für jedes Quartal):

%Vor%

Ich hoffe, Sie können dies an Ihre Daten anpassen.

    
Simon O'Hanlon 21.04.2013 22:14
quelle
2

Dies ist viel einfacher, wenn Ihre Daten als Datenrahmen formatiert sind:

%Vor%

Dann können Sie einfach Ihre Gruppierung anhängen ...

%Vor%

... und nach dieser Gruppierung aufgeteilt:

%Vor%

Die anonyme Funktion { ... } wird einmal für jede Gruppe aufgerufen, wobei df den zu dieser Gruppe gehörenden Subdatenrahmen enthält. Hier könnten Sie die Daten mit einer ähnlichen Maschine neu kombinieren und zu einer Matrix zusammenfassen. Die Funktion sollte ein Array von Dimensionen 3x3x1 zurückgeben, die durch daply verkettet werden, um das gewünschte Ergebnis zu bilden.

    
krlmlr 21.04.2013 21:11
quelle

Tags und Links