2015-11-27 2 views
-2

У меня есть файл csv, содержащий финансовые данные (например, даты с соответствующими ценами). Моя цель - загрузить эти данные в R и преобразовать даты с символьных данных в даты. Я пробовал следующее:R, csv file, As.Date возвращает только NAs

data<-read.csv("data.csv",sep=";") 
attach(data) 
as.Date(Date,format="%Y-%b-%d") #'Date' is the column containing the dates 

К сожалению, это приводит только к НС в дате. Вещи, которые были предложены в других потоках по этому вопросу, но не помогло мне:

  • чтения в файле CSV с «stringsAsFactors = FALSE»
  • форматирования даты в Excel как даты

Здесь пример из моего файла CSV:

Date;Open;High;Low;Close;Volume;Adj Close 
30.10.2015;10842.51953;10850.58008;10748.7002;10850.13965;89270000;10850.13965 
29.10.2015;10867.19043;10886.98047;10741.13965;10800.83984;122513100;10800.83984 
28.10.2015;10728.16016;10848.41016;10691.62988;10831.95996;0;10831.95996 
27.10.2015;10761.37012;10807.41016;10692.19043;10692.19043;0;10692.19043 
26.10.2015;10791.17969;10863.08984;10756.83008;10801.33984;73091500;10801.33984 
23.10.2015;10610.33008;10847.46973;10586.95996;10794.54004;0;10794.54004 
22.10.2015;10213.00977;10508.25;10194.74023;10491.96973;107511600;10491.96973 
21.10.2015;10185.41992;10277.58984;10107.91992;10238.09961;70021400;10238.09961 
20.10.2015;10174.79981;10194.53027;10080.19043;10147.67969;67235200;10147.67969 
+5

1) Никто не сможет помочь вам, пока вы не отправлять образец файла CSV. 2) Не используйте 'attach' в вашем R-коде. – nrussell

+3

См. [Этот вопрос и ответы о том, как дать воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610) – Jaap

+0

@ nrussell, что проблема с «приложением»? – Joe

ответ

1

format Ваш аргумент неверен, который обычно является причиной NA с при принуждении строки в Date объектов. Вы можете использовать это вместо того, чтобы:

R> as.Date(Df$Date, format = "%d.%m.%Y") 
#[1] "2015-10-30" "2015-10-29" "2015-10-28" "2015-10-27" "2015-10-26" 
#[6] "2015-10-23" "2015-10-22" "2015-10-21" "2015-10-20" 

Вместо attach, вы можете использовать такие альтернативы, как within, чтобы избежать квалификаций ваших имен столбцов. Например,

Df <- within(Df, { 
    Date <- as.Date(Date, format = "%d.%m.%Y") 
}) 
## 
R> class(Df$Date) 
#[1] "Date" 

данных:

Df <- read.table(
    text = "Date;Open;High;Low;Close;Volume;Adj Close 
30.10.2015;10842.51953;10850.58008;10748.7002;10850.13965;89270000;10850.13965 
    29.10.2015;10867.19043;10886.98047;10741.13965;10800.83984;122513100;10800.83984 
    28.10.2015;10728.16016;10848.41016;10691.62988;10831.95996;0;10831.95996 
    27.10.2015;10761.37012;10807.41016;10692.19043;10692.19043;0;10692.19043 
    26.10.2015;10791.17969;10863.08984;10756.83008;10801.33984;73091500;10801.33984 
    23.10.2015;10610.33008;10847.46973;10586.95996;10794.54004;0;10794.54004 
    22.10.2015;10213.00977;10508.25;10194.74023;10491.96973;107511600;10491.96973 
    21.10.2015;10185.41992;10277.58984;10107.91992;10238.09961;70021400;10238.09961 
    20.10.2015;10174.79981;10194.53027;10080.19043;10147.67969;67235200;10147.67969", 
    header = TRUE, stringsAsFactors = FALSE, sep = ";") 
+0

большое спасибо! – Joe

Смежные вопросы