R créer une copie d'une colonne où la nouvelle colonne est compensée par un montant fixe

StackOverflow https://stackoverflow.com/questions/4219715

  •  26-09-2019
  •  | 
  •  

Question

Je cherche à créer une copie d'une colonne existante dans une trame de données qui est compensé par un certain nombre de lignes.

par exemple. si column2 est une copie de column1 compensée par 1, puis

> dataframe
$column1
[1] 1 2 3 4 5

$column2
[1] 0 1 2 3 4

J'ai eu un certain succès avec le code suivant:

offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])

Cependant, il commence à donner des erreurs si j'OFFSET par 30 ou plus. Mes données est assez longtemps pour que ce ne soit pas un problème du décalage étant plus grand que le nombre de lignes. L'erreur est:

Error in dataframe$column1[1:(length(dataframe$column1) - 30)] : 
  only 0's may be mixed with negative subscripts

Merci d'avance! Une version gratuite de boucle rapide qui joue bien avec plyr serait préférable. L'intention est de briser les données de séries chronologiques dans divers retards jusqu'à un an, puis analyser les résultats de diverses manières.

Était-ce utile?

La solution

S'il vous plaît utiliser une classe de séries chronologiques appropriée pour les opérations de séries chronologiques. favoris populaires sont et XTS qui ont tous deux beaucoup de la documentation.

Comme un exemple simple, considérez

> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo,  l1=lag(foo,1), lm1=lag(foo,-1))
           foo  l1 lm1
2010-11-18 100  NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108  NA
> 

Mais ne le faites pas à la main. Et ne cherchez ici pour '[r] XTS' ou [r] zoo » pour rechercher dans la balise R.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top