如何从R中另一列的子字符串创建列?

时间:2016-06-03 01:02:26

标签: r

我的数据框df的列为ReleaseDate,因子列的数据如下:

Apr 10, 2001
Apr 10, 2007
...

我想创建一个仅包含年份的新列ReleaseYear,该列始终是ReleaseDate数据中的最后四个字符。

如何从ReleaseDate获取ReleaseYear的最后四个字符?

3 个答案:

答案 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)