将 .csv 文件中的 Excel 日期格式列识别为时间序列转换的日期
Recognizing Excel Date formatted column in .csv file as a Date for time series conversion
我已经从 Yahoo 下载了 DJI 历史数据作为 csv,以便在 R 中进一步分析。出于好奇 getSymbols("^DJI")
似乎没有用,但我离题了。
关键是我不知道如何把这个csv
文件变成时间序列格式。
这是到目前为止的输出和问题:
> DJI = read.csv("^DJI.csv")
> head(DJI)
Date Open High Low Close Adj.Close Volume
1 1/29/1985 1277.72 1295.49 1266.89 1292.62 1292.62 13560000
2 1/30/1985 1297.37 1305.10 1278.93 1287.88 1287.88 16820000
3 1/31/1985 1283.24 1293.40 1272.64 1286.77 1286.77 14070000
4 2/1/1985 1276.94 1286.11 1269.77 1277.72 1277.72 10980000
5 2/4/1985 1272.08 1294.94 1268.99 1290.08 1290.08 11630000
6 2/5/1985 1294.06 1301.13 1278.60 1285.23 1285.23 13800000
> chartSeries(DJI)
Error in try.xts(x, error = "chartSeries requires an xtsible object") :
chartSeries requires an xtsible object
因此 {quantmod}
函数 chartSerie
正在请求一个 .xts
文件,但是 DJI
中的 Date
列不会立即被识别为:
> DJI = as.Date(DJI$Date)
Error in charToDate(x) :
character string is not in a standard unambiguous format
在回答以下问题后进行编辑:
> head(DJI)
Open High Low Close Adj.Close Volume
1985-01-29 1277.72 1295.49 1266.89 1292.62 1292.62 13560000
1985-01-30 1297.37 1305.10 1278.93 1287.88 1287.88 16820000
1985-01-31 1283.24 1293.40 1272.64 1286.77 1286.77 14070000
1985-02-01 1276.94 1286.11 1269.77 1277.72 1277.72 10980000
1985-02-04 1272.08 1294.94 1268.99 1290.08 1290.08 11630000
1985-02-05 1294.06 1301.13 1278.60 1285.23 1285.23 13800000
> is.ts(DJI)
[1] FALSE
要转换日期,您需要 format
语句...
DJI$Date <- as.Date(DJI$Date,format="%m/%d/%Y")
quantmod
需要 xts
对象中的日期是行名称而不是单独的列。因此你也应该做
rownames(DJI) <- DJI$Date
DJI$Date <- NULL #to remove the column
chartSeries(DJI)
我已经从 Yahoo 下载了 DJI 历史数据作为 csv,以便在 R 中进一步分析。出于好奇 getSymbols("^DJI")
似乎没有用,但我离题了。
关键是我不知道如何把这个csv
文件变成时间序列格式。
这是到目前为止的输出和问题:
> DJI = read.csv("^DJI.csv")
> head(DJI)
Date Open High Low Close Adj.Close Volume
1 1/29/1985 1277.72 1295.49 1266.89 1292.62 1292.62 13560000
2 1/30/1985 1297.37 1305.10 1278.93 1287.88 1287.88 16820000
3 1/31/1985 1283.24 1293.40 1272.64 1286.77 1286.77 14070000
4 2/1/1985 1276.94 1286.11 1269.77 1277.72 1277.72 10980000
5 2/4/1985 1272.08 1294.94 1268.99 1290.08 1290.08 11630000
6 2/5/1985 1294.06 1301.13 1278.60 1285.23 1285.23 13800000
> chartSeries(DJI)
Error in try.xts(x, error = "chartSeries requires an xtsible object") :
chartSeries requires an xtsible object
因此 {quantmod}
函数 chartSerie
正在请求一个 .xts
文件,但是 DJI
中的 Date
列不会立即被识别为:
> DJI = as.Date(DJI$Date)
Error in charToDate(x) :
character string is not in a standard unambiguous format
在回答以下问题后进行编辑:
> head(DJI)
Open High Low Close Adj.Close Volume
1985-01-29 1277.72 1295.49 1266.89 1292.62 1292.62 13560000
1985-01-30 1297.37 1305.10 1278.93 1287.88 1287.88 16820000
1985-01-31 1283.24 1293.40 1272.64 1286.77 1286.77 14070000
1985-02-01 1276.94 1286.11 1269.77 1277.72 1277.72 10980000
1985-02-04 1272.08 1294.94 1268.99 1290.08 1290.08 11630000
1985-02-05 1294.06 1301.13 1278.60 1285.23 1285.23 13800000
> is.ts(DJI)
[1] FALSE
要转换日期,您需要 format
语句...
DJI$Date <- as.Date(DJI$Date,format="%m/%d/%Y")
quantmod
需要 xts
对象中的日期是行名称而不是单独的列。因此你也应该做
rownames(DJI) <- DJI$Date
DJI$Date <- NULL #to remove the column
chartSeries(DJI)