#datetime #r #file-io #posix #time-series
#datetime #r #файл-ввод-вывод #posix #временные ряды
Вопрос:
Я пытаюсь использовать пакет R timeSeries для чтения CSV-файлов.
Это код, который я пытаюсь запустить:
prices <- readSeries(file='A2006-2011.csv',head=T,sep=",",format="%m/%d/%Y")
Однако он не распознает дату в формате csv (ниже приведены первые несколько ее строк)
Date Open High Low Close Volume Adj.Close
4/4/2011 45.07 45.41 44.36 44.83 2133900 44.83
4/1/2011 44.88 45.48 44.78 45.14 2212300 45.14
3/31/2011 44.92 45.02 44.46 44.78 2194900 44.78
3/30/2011 44.79 45.17 44.65 45.09 2514100 45.09
и выводится следующее предупреждение:
Warning message:
In readSeries(file = "A2006-2011.csv", head = T, sep = ",", format = "%m/%d/%Y") :
Conversion of timestamps to timeDate objects produced only NAs.
Are you sure you provided the proper format with argument 'format'
or in the header of your file ?
Я буду очень признателен, если кто-нибудь сможет мне в этом помочь.
Комментарии:
1. Правильно ли, что вы используете запятую в качестве разделителя полей, даже если в вашем файле, похоже, нет запятых?
Ответ №1:
Честно говоря, я бы просто прочитал таблицу в Date
виде строк, а затем произвел быстрое преобразование. Например,
> x = c("4/4/2011", "4/4/2011", "3/31/2011", "3/30/2011")
## In your case you would have prices$Date = as.Date(prices$Date, ...
> as.Date(x, "%m/%d/%Y")
[1] "2011-04-04" "2011-04-04" "2011-03-31" "2011-03-30"
Комментарии:
1. Благодаря вам я действительно понял это. Даже если даты в файле выглядят как «»4/4/2011», когда вы читаете его в R, они становятся «2011-04-04″. Поэтому, если кто-либо столкнется с той же проблемой с файлами данных csv, загруженными с yahoo, правильный способ ввода даты в формате format=»%Y-%m-%d».
Ответ №2:
Попробуйте этот пакет: speedR в https://r-forge.r-project.org/projects/speedr. Это визуальный импортер данных и поддерживает классы Date и POSIXct. Также вы можете использовать это для визуальной фильтрации существующих R-объектов из рабочей области.