#r #plot #xts #quantmod
#r #график #xts #quantmod
Вопрос:
Я борюсь с некоторыми базовыми функциями xts. Я читаю файл данных CSV и пытаюсь отобразить данные с candleChart()
помощью функции (из пакета quantmod). У меня возникли некоторые проблемы после преобразования моего data.frame в объект xts из-за перехода на летнее время.
По сути, данные являются OHLC из валютной пары EUR / USD за одну минуту. В этом году переход на летнее время был осуществлен 27 марта 2016 года с 02:00 до 03:00 утра. После преобразования data.frame в xts 60 индексов в этом временном окне отсутствуют ( NA
).
Ниже вы найдете код. Я также прикрепил файл данных. Есть ли какой-нибудь простой способ исправить преобразование данных без потери чего-либо?
forexData <- read.csv(fileName, sep = ".", dec = ",")
#View(forexData)
dataSerie <- xts(forexData[,2:6], order.by=as.POSIXct(forexData[,1], tz=""))
# Checking if data index contains "NA"s and save index where NA are located
index_NA <- which(is.na(index(dataSerie)))
if(length(index_NA) == 0) {
candleChart(dataSerie, name="First Plot", subset="last 3 weeks", bar.type="ohlc")
} else {
print("!!! Warning !!! - Data index contains NAs")
}
Комментарии:
1. Похоже, что ваши десятичные дроби отформатированы с помощью запятой (
,
); поэтому добавьтеdec = ","
в свойread.csv
вызов :forexData <- read.csv(fileName, sep = ".", dec=",")
. Возможно, это не единственная ваша проблема, но, несомненно, это хорошее начало.2. Спасибо, Абду, на самом деле это была проблема.. Я понял это ou и установил dec на «,» все прошло нормально… но я застрял в следующей проблеме:
3. Пожалуйста, добавьте ошибку из следующей проблемы в свой вопрос, чтобы кто-нибудь мог помочь.
4. Я считываю данные из csv и преобразую их в объект xts () и получаю много преобразований NAs aftre. Данные, похоже, в порядке.. код приведен ниже..
forexData <- read.csv(fileName, sep = ".", dec = ",") dataSerie <- xts(forexData[,2:6], order.by=as.POSIXct(forexData[, 1], tz="", format="%Y-%m-%d %H:%M:%S")) candleChart(dataSerie, name="First Plot", subset="last 3 weeks", bar.type = "ohlc")
5. При попытке построения данных я получаю следующую ошибку: Ошибка в периодичности (x): не удается рассчитать периодичность 1 наблюдения , я думаю, из-за NAs
Ответ №1:
Заголовок вашего CSV:
TimeUTC.Open.High.Low.Close.Volume
Таким образом, столбец timestamp отображается в UTC, в котором нет перехода на летнее время. Поэтому вы должны указать часовой пояс как UTC в своем вызове as.POSIXct
:
dataSerie <- xts(forexData[,2:6], order.by=as.POSIXct(forexData[,1], tz="UTC"))