7
votes

Générer une variable de somme mobile en r

Je soupçonne que c'est une question quelque peu simple avec plusieurs solutions, mais je suis toujours un peu novice dans R et une recherche exhaustive n'a pas donné de réponses qui parlaient bien à ce que je veux faire.

J'essaie de créer, faute de meilleur terme, "Moving SUMS" pour une variable dans mon cadre de données. Celles-ci seraient des sommes de 3 ans et de 5 ans, à la traîne d'un an. Ainsi, une somme de 5 ans pour une observation en 1986 serait la somme de toutes les observations précédentes en 1981, 1982, 1983, 1983, 1984 et 1985. Voici un exemple de ce que j'aimerais faire, où la variable de somme est la Somme de tous x au cours des cinq années précédant l'année d'observation. xxx

Il s'agit de données de panneaux non équilibrés. Je soupçonne ddply serait approprié, mais je ne connais pas le codage exact pour cela.

Toute entrée serait appréciée.


1 commentaires

Jetez un coup d'œil à ? Rollsum à partir du package zoo . Combiné avec agrégat , data.table ou ddply vous devez être défini.


3 Réponses :


9
votes

Vous pouvez utiliser filtre dans ddply (ou toute autre fonction implémentant l'approche "Split-apply-combinez"): xxx


0 commentaires

3
votes

Si df est la trame de données d'entrée à trois colonnes, puis utilisez AVE avec rollApplyR du zoo. Notez que nous utilisons une largeur de k + 1 , puis déposez l'élément K + 1st de la somme de sorte que la valeur actuelle de x est exclue et que le seul code restant > k Les valeurs sont additionnées: xxx

qui donne: xxx


0 commentaires

0
votes

Vous pouvez également utiliser filtre de packages standard ( statistiques ) pour déplacer la somme: xxx

pour faire un 1 décalage , insert na au début et prenez le nombre d'éléments (ou lignes): xxx

Si vous utilisez cela fréquemment, < Pré> xxx


0 commentaires