Gibt es eine Funktion wie rollapply für data.frame [duplizieren]

8
  

Mögliche Duplikate:
Kann 'ddply' (oder ähnliches) ein gleitendes Fenster machen?

Gibt es eine Funktion wie rollapply (Standard R oder innerhalb eines CRAN-Pakets), die auf einem dat.frame arbeitet, aber nicht in eine Matrix konvertiert. rollapply kann mit einem data.frame verwendet werden, aber wenn data.frame gemischte Typen hat, wird jedes Datenfenster in ein Zeichen (Matrix) umgewandelt.

Ich bevorzuge eine Funktion, die width, na.pad, align, etc. genau wie rolllapply

unterstützt

Beispiel

Nehmen Sie einen data.frame mit gemischten Typen

test = data.frame( Name = c( "bob" , "jane" , "joe" ) , Points = c( 4 , 9 , 1 ) )

Nehmen wir an, Sie möchten mit der Fenstergröße 2 rollen. Die erste Iteration von FUN wird mit einem data.frame aufgerufen, das nur die Zeilen 1 und 2 des Tests enthält.

So RollapplyThatRespectsDataFrame( ... , FUN = function( x ) { ... } ) bei der ersten Iteration würde x = data.frame( Name = c( "bob" , "jane" ) , Points = c( 4 , 9 ) )

setzen

Die zweite Iteration ist ein data.frame mit den Zeilen 2 und 3 von test .

Grundsätzlich funktioniert diese neue Funktion genauso wie rollapply, außer dass sie mit data.frames ordnungsgemäß funktioniert. Es wird nicht in eine Matrix umgewandelt.

    
SFun28 07.12.2012, 21:39
quelle

1 Antwort

8

Versuchen Sie Folgendes:

%Vor%

In Bezug auf das Beispiel, das nach einer Diskussion zur Frage hinzugefügt wurde, kann diese Funktionalität über rollapply überlagert werden, indem sie auf die Zeilenindizes angewendet wird:

%Vor%

und hier ist es ein wenig besser verpackt:

%Vor%     
G. Grothendieck 07.12.2012, 22:49
quelle

Tags und Links