R,csv文件,As.Date仅返回NAs

时间:2015-11-27 21:49:02

标签: r csv

我有一个包含财务数据的csv文件(即具有相应价格的日期)。我的目标是在R中加载这些数据并将日期从字符数据转换为日期。我尝试了以下方法:

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

不幸的是,这只会导致日期中的NAs。在这个问题的其他线程中提出但没有帮助我的事情:

  • 使用&#39; stringsAsFactors = FALSE&#39;
  • 读取csv文件
  • 将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

1 个答案:

答案 0 :(得分: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 = ";")