在R中从因子转换为日期

时间:2017-03-18 01:11:38

标签: r date na

我将我的数据作为字符读取,如下:

gc <- read.csv("C:/Users/name/Documents/folder 1/folder 2/folder 3/gc_data1.csv", header = TRUE, stringsAsFactors=FALSE)

我可以gc$date检查日期是否全部并且看起来很好,作为字符。现在当我尝试将它们转换为日期时出现问题:

gc$date <- as.Date(gc$date, format="%d/%m/%Y")

我尝试使用&#34; as.Date&#34;功能和其中一些成为&#34; NA&#34;。控制台行[1-56]和[381-446]正确转换(日期分别显示为yyyy-mm-dd:2016-12-09和2016-07-11),其余显示NA。

这里发生了什么,如何将所有日期从字符转换为日期?

数据来自保存为csv的Excel工作表,如下所示(日期和图表更改):

|情节|日期|
| ------ | -------- |
| MI13 | 2016年9月19日|
| Mi23 | 2016年9月19日|
| SO14 | 2016年10月26日|
| MI12 | 2016年11月21日|

2 个答案:

答案 0 :(得分:0)

首先,您的数据:

R> dt <- as.factor(c("9/19/2016", "9/19/2016", "10/26/2016", "11/21/2016"))
R> dt
[1] 9/19/2016  9/19/2016  10/26/2016 11/21/2016
Levels: 10/26/2016 11/21/2016 9/19/2016
R>

其次,使用anytime包中的anydate()函数 - 除其他外,还可以直接处理因素:

R> library(anytime)
R> anydate(dt)
[1] "2016-09-19" "2016-09-19" "2016-10-26" "2016-11-21"
R> 

答案 1 :(得分:0)

您的数据采用月/日/年格式,但您使用日/月/年作为格式字符串。如果您确定它有效:

x <- as.factor(c("9/19/2016", "9/19/2016", "10/26/2016", "11/21/2016")) 

as.Date(x, format = "%m/%d/%Y")
## [1] "2016-09-19" "2016-09-19" "2016-10-26" "2016-11-21"