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ütztBeispiel
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 ) )
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.
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:
und hier ist es ein wenig besser verpackt:
%Vor%Tags und Links r