【发布时间】:2016-03-09 20:12:24
【问题描述】:
我已经导入了一些数据。问题是日期的格式为例如 20140101。
标准格式是 2014-01-01,当我尝试 as.Date(datecolumn, format = '%Y-%m-&d) 时,我得到了非常奇怪的年份值。
如何快速有效地将我的日期转换为标准日期格式?
我可以使用paste0来做到这一点,但肯定有更好的方法吗?
输出
> head(backup)
quote_date open high low close volume value
1 20151203 263.10 263.10 263.10 263.10 0 0
2 20151202 264.51 264.51 264.51 264.51 0 0
3 20151201 261.91 261.91 261.91 261.91 0 0
4 20151130 260.68 260.68 260.68 260.68 0 0
5 20151127 256.75 256.75 256.75 256.75 0 0
6 20151125 253.93 253.93 253.93 253.93 0 0
> str(backup)
'data.frame': 960 obs. of 7 variables:
$ quote_date: int 20151203 20151202 20151201 20151130 20151127 20151125 20151124 20151123 20151120 20151119 ...
$ open : num 263 265 262 261 257 ...
$ high : num 263 265 262 261 257 ...
$ low : num 263 265 262 261 257 ...
$ close : num 263 265 262 261 257 ...
$ volume : int 0 0 0 0 0 0 0 0 0 0 ...
$ value : int 0 0 0 0 0 0 0 0 0 0 ...
> head(as.Date(backup$quote_date, format = '%Y%m%d'))
[1] NA NA NA NA NA NA
【问题讨论】:
-
as.Date(datecolumn, format = '%Y%m%d')? -
format参数适用于数据已经采用的格式,而不是您要使其成为的格式。help(as.Date) -
当我使用 format = '%Y%m%d' 我得到所有返回值的 NA。
-
@uncool 请注意,这些值是以整数形式读入的,因此要应用的第一个函数是
as.character,然后as.Date将应用正确的转换。有两种不同的as.Date函数,一种用于数值,另一种用于数值。 -
...此外,您声称已运行的代码有问题,因为将整数传递给
as.Date()而不指定origin将返回错误,而不是NA,因为记录在?as.Date。