从日期字符串中提取年份,格式为12月06日,1月90日,2月-76等

时间:2017-04-05 15:40:36

标签: r date

我在R中有一个数据框。它有一个列包含日期格式为Dec-06,Jan-90,Feb-76等的日期。它们是字符串。如何以这种格式提取它的年份部分:2006,1990,1976等?我想丢弃月份段并将其作为年份部分的距离处理,并将此列视为我的逻辑回归的连续变量。

我尝试了R中提供的几个日期格式包,如POSIX,lubridate等,但无法提取。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

format(as.Date(gsub(".*-","","Dec-06"), format = "%y"), "%Y")
#[1] "2006"

OR

library(lubridate)
format(myd(paste("Dec-06","-01",sep="")), "%Y")
#[1] "2006"

答案 1 :(得分:3)

我们将字符串转换为dataset = np.genfromtxt('data/train.csv', delimiter=',', dtype='f8,str')[1:] 类,然后仅从中提取年份。

Date

数据

format(as.Date(paste0("01-", x), "%d-%b-%y"), "%Y")

#[1] "2006" "1990" "1976"

答案 2 :(得分:1)

使用lubridate,很容易,年份函数是lubridate的一部分:

library(lubridate)
dat <- data.frame(x=c("Mar-06","Jan-90","May-76"))
dat$date <- as.POSIXlt(paste0("01-",tolower(dat$x)),format="%d-%b-%y",origin="1970-01-01")
dat$year <- year(dat$date)

<强>答案:

> dat
       x       date year
1 Mar-06 2006-03-01 2006
2 Jan-90 1990-01-01 1990
3 May-76 1976-05-01 1976

答案 3 :(得分:0)

以下是zoo

的另一个选项
library(zoo)
data.table::year(as.yearmon("Dec-06", "%b-%y"))
#[1] 2006

或者正如@ G.Grothendieck所提到的那样,as.integer会返回year

as.integer(as.yearmon("Dec-06", "%b-%y"))
#[1] 2006