2016-08-24 55 views
1

我希望将我的csv文件导入到数据框中,但我的csv文件中的日期是非标准格式。R中的read.csv2日期格式

在第一列中的日期是按以下格式:

2016年9月8日

在我read.csv2功能中的一个参数是指定类和我指定此列作为日期我在执行时收到以下错误:

Error in charToDate(x) : 
    character string is not in a standard unambiguous format 

我猜它不喜欢从要素类转换日期Date类。

我读过一点关于POSIXlt的内容,但是我不明白该函数的细节。

任何想法如何将类从因子转换为日期?

+1

不要让'read.csv2'的'colClasses'选项做转换成日期格式。相反,阅读没有该选项的数据,然后通过指定适当的格式转换为日期类。 'df1 < - read.csv2(text =“08.09.2016”,header = FALSE); df1 [,1] < - as.Date(df1 [,1],format =“%m。%d。%Y”)'。 – RHertel

回答

2

将字符转换为日期时,如果不符合标准,则需要指定格式。你得到的错误是as.Date("08.09.2016")的结果。但如果你做as.Date("08.09.2016", format = "%m.%d.%Y"),那很好。

我不确定是否可以将格式传递给read.csv2以获得正确的日期格式(可能不是)。我只是简单阅读这个日期列作为因素,然后在本专栏上自己做as.Date(as.character(), format = "%m.%d.%Y")

通常我们使用以下格式“dd/mm/yy”如何重新组织日期到该格式?

使用format(, format = "%d/%m/%y")


一个完整的例子:

format(as.Date("08.09.2016", format = "%m.%d.%Y"), format = "%d/%m/%y") 
# [1] "09/08/16" 
+1

将自己的格式传递给'read.csv2'当然是可以的 - 你必须先创建你自己的类 - http://stackoverflow.com/a/13022441/496803 – thelatemail

+0

@thelatemail与大量的答案。 'setClass'是最好的,因为我认为'Defaults'包已经不存在了。 –