我的数据框df
的列为ReleaseDate
,因子列的数据如下:
Apr 10, 2001
Apr 10, 2007
...
我想创建一个仅包含年份的新列ReleaseYear
,该列始终是ReleaseDate
数据中的最后四个字符。
如何从ReleaseDate
获取ReleaseYear
的最后四个字符?
答案 0 :(得分:4)
以下是两个选项,一个使用year
来自lubridate
,另一个使用正则表达式:
library(lubridate)
year(as.Date("Apr 10, 2001", format = "%b %d, %Y"))
[1] 2001
library(stringr)
str_extract("Apr 10, 2001", "\\d{4}$")
[1] "2001"
答案 1 :(得分:2)
这是一个选择。 gsub将返回“,”之后的所有内容。
a <- c("Apr 10, 2001", "Apr 10, 2007")
df <- data.frame(a)
colnames(df) <- "ReleaseDate"
df$ReleaseYear <- gsub("^.*?, ","",a)
这是另一种选择。
df$ReleaseYear <- substr(df$ReleaseDate, 9, 12)
还有一个选择。
library(stringr)
df$ReleaseYear <- str_sub(df$ReleaseDate, -4)
答案 2 :(得分:2)
使用substr。 substr(x,start,stop)。你的开始将是df -4的长度。
substr(df, nchar(df)-4,4)