我有以下DF:
date <- c("2017-10-11","2018-04-02","2017-05-03")
df <- data.frame(date)
以下代码无法将其格式化为日期,而是返回NAs:
df$date <- as.Date(df$date,format='%Y/%m/%d')
以下代码成功将其格式化为日期:
df$date <- as.Date(df$date)
我已经在其他项目中指定了as.Date格式(在第一个as.Date代码中),它之前对我有用。关于as.Date返回NAs的类似问题有很多回复,但是我无法解释为什么我的第一个as.Date代码在这种情况下不起作用,但我的第二个代码确实如此。我不需要为我的目的指定格式,但我想理解为什么第一行代码不起作用。
答案 0 :(得分:1)
format
函数的as.Date
参数的默认值为"%Y-%m-%d"
,它与date
df
列的格式相匹配。
因此,df$date <- as.Date(df$date)
完美无缺。
R-Studio帮助将
format
参数描述为:格式
字符串。如果未指定,则会尝试
"%Y-%m-%d"
然后在第一个非NA元素上"%Y/%m/%d"
,如果是,则给出错误 既不起作用。否则,处理是通过strptime
但是,df$date <- as.Date(df$date,format='%Y/%m/%d')
将不工作。原因是数据列中不存在作为/
的一部分提到的分隔符format
。