Cela semble être une chose commune, mais toute ma recherche apparaît avec des réponses à moitié ou inachevées.
J'ai un ensemble de données dans une CSV. Mais les données sont configurées, il est donc temps, prix, volume. Pour analyser correctement mes données, j'en ai besoin au format OHLCV: Ouvrir, haut, bas, Fermer, Volume. P>
Est-ce que quelqu'un a une idée de reformater en OHLCV? P>
ici est < Un href = "http://www.mediafire.com/?fyunce685ekuyo3" rel = "nofollow"> un échantillon d'un jeu de données : p>
3 Réponses :
a de Si vous n'avez pas la colonne Volume, il n'y a aucun code que vous pouvez écrire qui ajoutera ces données. Il semble que vous ayez juste une série de prix intraday. Vous pouvez toujours les classer comme zoo code> peut être reclassé comme
OHLC code> avec
classe (données) <- C ('zoo', 'ohlc', "une autre classe" ) code>. p>
? Quantimod :: Quantid.ohlc Code>: P>
'quanmod.ohlc' code> est en réalité un nom de renommage d'un objet de classe
'zoo' code>, avec la convention de
nom.open, nom.hager , ... code> pour les noms de colonne. P>
blockQuote>
zoo code> ou
XTS code> et effectuez une analyse de la série chère. Si vous souhaitez réduire la résolution de vos données, vous pouvez toujours numériser chaque jour et utiliser les fonctions
d'abord code>,
max code>,
min code>, < Code> Dernier code> Pour obtenir votre
O code>,
h code>,
l code>,
c code>. p>
Pour illustrer @ Joshuauaulrich's Comment : to.minutes code> est un de nombreux emballages pour
à.Period code>. C'est équivalent, mais
Plus général: P>
to.period(myxts, 'minutes', 1)
de http: //r.789695 .n4.non.com / Convert-Tick-Data-To-OHLC-TD926206.HTML
ohlc <- function(ttime,tprice,tvolume,fmt) { ttime.int <- format(ttime,fmt) data.frame(time = ttime[tapply(1:length(ttime),ttime.int,function(x) {head(x,1)})], .Open = tapply(tprice,ttime.int,function(x) {head(x,1)}), .High = tapply(tprice,ttime.int,max), .Low = tapply(tprice,ttime.int,min), .Close = tapply(tprice,ttime.int,function(x) {tail(x,1)}), .Volume = tapply(tvolume,ttime.int,function(x) {sum(x)}), .Adjusted = tapply(tprice,ttime.int,function(x) {tail(x,1)})) }
Ce sera beaucoup plus lent que à.Période code> surtout s'il y a des millions de lignes de données.
@Gsee a définitivement plus lentement, mais j'ai eu des problèmes lorsque j'ai expérimenté à l'envers. Période plus tôt. J'ai aussi inclus cela que je l'avais dans ma question initiale parce que la question était fermée par une personne qui ne pensait pas que c'était intéressant.
Vous pouvez donner quelques premières lignes (avec l'en-tête) de vos données d'origine, puis un en-tête de la sortie souhaitée. Un vrai traitement serait une copie / code pastable pour importer des exemples de données que nous pouvons jouer avec.
Voir
XTS :: to.Period code>.