Je cherche à créer une copie d'une colonne existante dans une image donnée qui est compensée par un nombre de lignes.R Créer une copie d'une colonne où la nouvelle colonne est compensée par un certain montant fixe
E.g. si colonne2 est une copie de colonne1 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 sont assez longues pour que cela ne soit pas un problème d'offset 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 sans boucle rapide qui joue bien avec plyr serait préférable. L'intention ici est de diviser les données de timeseries en différents délais pouvant aller jusqu'à un an, puis d'analyser les résultats de diverses manières.
sur un sidenote: plyr n'est pas exactement "sans boucle". C'est une structure en boucle. –
Joris: J'utilise plyr pour diviser la dataframe en bits sur lesquels je travaille ensuite individuellement de manière à ce que ce soit quelque chose qui s'intègre parfaitement dans ce workflow. Par exemple. dans ce cas, je divisais les données du marché par symbole boursier, puis j'ajoutais une nouvelle colonne qui compensait la colonne précédente de 30 jours. Mon code était: marketdata <- ddply (marketdata, c ("stock_symbol"), transformer, adj.close.Prev30 = c (liste30, adj.close [1: (longueur (stock_symbol) -30)]), parallel = TRUE) mais merci pour les heads up! :) – psandersen