Ich habe this file, die drei .csv-Dateien enthält, EURAUD_201501
, EURAUD_201502
, EURAUD_201503
. Die Dateien enthalten von Januar bis März 2015 Forex-Tick-Daten. Der erste Schritt meiner Übung besteht darin, den Datensatz in eine funktionale Form zu bringen. Der (Arbeits-) Code ist:Erstellen Sie eine gültige Schleife auf R
#Entering and editing data by hand#
data1<-read.csv("EURAUD_201501.csv", header = FALSE, col.names = c("TIMESTAMP", "BID", "OFR", "VOL"), stringsAsFactors = FALSE)
data1$VOL<- NULL #drops the VOL column
data1$TIMESTAMP = sub('(?<=.{11})', ':', data1$TIMESTAMP, perl=TRUE) #manipulate the strings to create clear timestamps
data1$TIMESTAMP = sub('(?<=.{14})', ':', data1$TIMESTAMP, perl=TRUE)
data1$TIMESTAMP = sub('(?<=.{17})', '.', data1$TIMESTAMP, perl=TRUE)
xts_data1 = xts(data1[,c(2,3)], order.by = as.POSIXct(data1$TIMESTAMP, tz = "EST", format = "%Y%m%d %H:%M:%OS")) #Convert file to an xts object
rm(data1) #remove data1 object in order to save space
data2<-read.csv("EURAUD_201502.csv", header = FALSE, col.names = c("TIMESTAMP", "BID", "OFR", "VOL"), stringsAsFactors = FALSE)
data2$VOL<- NULL #drops the VOL column
data2$TIMESTAMP = sub('(?<=.{11})', ':', data2$TIMESTAMP, perl=TRUE) #manipulate the strings to create clear timestamps
data2$TIMESTAMP = sub('(?<=.{14})', ':', data2$TIMESTAMP, perl=TRUE)
data2$TIMESTAMP = sub('(?<=.{17})', '.', data2$TIMESTAMP, perl=TRUE)
xts_data2 = xts(data2[,c(2,3)], order.by = as.POSIXct(data2$TIMESTAMP, tz = "EST", format = "%Y%m%d %H:%M:%OS")) #Convert file to an xts object
rm(data2) #remove data2 object in order to save space
data3<-read.csv("EURAUD_201503.csv", header = FALSE, col.names = c("TIMESTAMP", "BID", "OFR", "VOL"), stringsAsFactors = FALSE)
data3$VOL<- NULL #drops the VOL column
data3$TIMESTAMP = sub('(?<=.{11})', ':', data3$TIMESTAMP, perl=TRUE) #manipulate the strings to create clear timestamps
data3$TIMESTAMP = sub('(?<=.{14})', ':', data3$TIMESTAMP, perl=TRUE)
data3$TIMESTAMP = sub('(?<=.{17})', '.', data3$TIMESTAMP, perl=TRUE)
xts_data3 = xts(data3[,c(2,3)], order.by = as.POSIXct(data3$TIMESTAMP, tz = "EST", format = "%Y%m%d %H:%M:%OS")) #Convert file to an xts object
rm(data3) #remove data3 object in order to save space
#Create 5-minute intervals
final_xts = rbind.xts(xts_data1, xts_data2, xts_data3)
rm(data1_xts, data2_xts, data3_xts)
final_fivemin = aggregatets(final_xts, FUN = "previoustick", on = "minutes", k = 5)
Wie kann ich eine funktionelle Schleife erstellen, ohne die gleiche Prozedur für jede Datensatz zu wiederholen?
Dank für Ihre Antwort danken. Ich denke, Sie sind auf dem richtigen Weg, aber wir brauchen ein bisschen mehr Anstrengung, um das gewünschte Ergebnis zu erreichen. Wenn Sie meinen ersten funktionalen Code ausführen, erstellt er Matrizen [data_frames ist der passende Ausdruck, den ich erwarte]. Ich starte deinen Code aber es kommt leider nicht zurück was ich will. Ich werde meine erste Frage bearbeiten, um sie klarer zu machen. – Greconomist
Ich habe keine Daten, daher kann ich Ihren Code nicht ausführen. Aber 'lapply' gibt eine Liste zurück; Um einen Datenrahmen zu erhalten, können Sie 'final_xts <- do.call (rbind, xts_data)' nach dem obigen Code-Chunk machen. –
Wenn Sie auf "Ich habe ** diese Datei **" oben in meinem Beitrag klicken, können Sie die Daten herunterladen. – Greconomist