我将我的数据作为字符读取,如下:
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日|
答案 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"