我有一些日期列的数据:
这里的格式是月 - 年。但是这个列是因子格式,我需要它作为日期。
> str(data$date)
Factor w/ 211 levels "01-1994","01-1996",..: 88 157 125 137 139 106 11 204 45 173 ...
我试图以这种方式改变它,但结果是NA的一列。错误在哪里?
data$date <- as.Date(data$date, format = "%m-%Y")
答案 0 :(得分:3)
您可以考虑查看具有yearmon
格式的“zoo”包:
## Some sample data
test <- data.frame(date = c("05-2010", "09-2007", "01-2013"))
str(test)
# 'data.frame': 3 obs. of 1 variable:
# $ date: Factor w/ 3 levels "01-2013","05-2010",..: 2 3 1
转换为yearmon
:
library(zoo)
as.yearmon(test$date, format="%m-%Y")
# [1] "May 2010" "Sep 2007" "Jan 2013"
仅供参考:如果您需要常规日期格式,可以在as.yearmon
中打包as.Date
。
as.Date(as.yearmon(test$date, format="%m-%Y"))
# [1] "2010-05-01" "2007-09-01" "2013-01-01"
答案 1 :(得分:1)
你没有约会。您有一个因子变量,str()
告诉您。
更一般地说,查看stringsAsFactors=FALSE
,作为数据读取的选项(包括来自数据库)或全局选项。
对于手头的问题:结合
as.Date(paste0(as.character(date$date), "-01"), "%m-%Y-%d")
因为您还需要一天时间来创建有效日期。