Ich versuche, ein Array basierend auf dem Dimensionsnamen auf effiziente Weise zu aggregieren.Aggregieren eines Arrays basierend auf den Dimensionsnamen
ex_array <- array(1:10000, dim = c(100, 10, 10),
dimnames = list(Col1 = c(rep(10,50), rep(20, 50)),
Col2 = 1:10,
Col3 = 1:10))
Jetzt möchte ich dieses Array auf der Grundlage der Namen der ersten Dimension aggregieren. Diese Dimension hat zwei verschiedene Namen (10 und 20). Daher sollte das neue Array die Dimension 2 mal 10 mal 10 haben. Alle Werte mit dem Dimensionsnamen 1, die 10 entsprechen, sollten addiert werden und die Werte mit Dimension 1 sollten 20 sein zusammengefasst werden.
Gibt es eine clevere Möglichkeit, dies zu tun?
apply(ex_array[dimnames(ex_array)[[1]] == "10",,], 2:3, sum)
Wenn Sie dann, dass wickeln in einem sapply
Sie eine 2 x prod(N1, N2)
Matrix mit den richtigen Informationen erhalten, rufen:
Als ich Durchführung dachte ich entworfen ist, dass dies wahrscheinlich aussehen würde viel kompakter, wenn es durch "reshape2" oder "splitstackshape" oder "dplyr" Funktionen gemacht wird. (Und es liefert, was ich denke, ist das richtige Ergebnis auch.) –