我在R中有一个数据框。它有一个列包含日期格式为Dec-06,Jan-90,Feb-76等的日期。它们是字符串。如何以这种格式提取它的年份部分:2006,1990,1976等?我想丢弃月份段并将其作为年份部分的距离处理,并将此列视为我的逻辑回归的连续变量。
我尝试了R中提供的几个日期格式包,如POSIX,lubridate等,但无法提取。
有什么想法吗?
答案 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