R 从带有日期的向量中分离年份

R 从带有日期的向量中分离年份,r,vector,dataframe,character,R,Vector,Dataframe,Character,如何从带有日期的向量中分离出年份?或者一般来说:你怎么能把一个单词的一部分(这里是一个单词的最后四个字母)分离出来 我试过使用lubridate软件包 require(lubridate) mydf$year <- year(mydf$date) require(润滑油) mydf$year这里有两种方法,一种基于日期,一种基于字符: with(mydf, substr(date, nchar(as.character(date)) - 3, nch

如何从带有日期的向量中分离出年份?或者一般来说:你怎么能把一个单词的一部分(这里是一个单词的最后四个字母)分离出来

我试过使用lubridate软件包

require(lubridate)
mydf$year <- year(mydf$date)
require(润滑油)

mydf$year这里有两种方法,一种基于日期,一种基于字符:

with(mydf, substr(date, nchar(as.character(date)) - 3, 
                  nchar(as.character(date))))
# [1] "2001" "2003" "2004" "2001" "2003"

format(as.Date(mydf$date, "%d.%m.%Y"), "%Y")
# [1] "2001" "2003" "2004" "2001" "2003"

在这种情况下,
nchar
是多余的,因为字符串的宽度是固定的,但这应该为您提供一个示例,说明如何从字符串的末尾向后移动4个字符。

使用包中的
stri_sub
获得最后4个字符,如下所示:

#         date company year
# 1 05.06.2001       1 2001
# 2 02.10.2003       1 2003
# 3 06.12.2004       1 2004
# 4 01.01.2001       2 2001
# 5 01.04.2003       2 2003
require(stringi)    
stri_sub(mydf$date, from=-4)
## [1] "2001" "2003" "2004" "2001" "2003"

from
参数中使用的负值表示字符应从字符串末尾开始计数。
to
参数的默认值是-1,意思是“直到结束”,因此无需更改此值。

-1:您尝试了什么?考虑到您的更新,也许您也应该编辑您的标题。我个人仍然认为这是一个易于通过谷歌搜索的问题。@Ananda Mahto&bartektartanus:谢谢您的帮助!@科多里米法:谢谢你让我知道你的拙见。
require(stringi)    
stri_sub(mydf$date, from=-4)
## [1] "2001" "2003" "2004" "2001" "2003"