如何从变量中删除第一个元素,尤其是在此变量具有特殊字符的情况下。例如,我有以下专栏:
Date
01/01/2009
01/01/2010
01/01/2011
01/01/2012
我需要有一个新的列,如下所示:
Date
2009
2010
2011
2012
如何从变量中删除第一个元素,尤其是在此变量具有特殊字符的情况下。例如,我有以下专栏:
Date
01/01/2009
01/01/2010
01/01/2011
01/01/2012
我需要有一个新的列,如下所示:
Date
2009
2010
2011
2012
gsub(".*/","",df$Date)
substr(as.character(....), 7, 10)
lubridate::year
一旦数据为@akrun建议的“日期”格式,它也应该起作用。
Date
并使用一个format
或其他函数来提取其一部分。例如,x <- as.Date("01/01/2009", format = "%m/%d/%Y"); lubridate::year(x)
。
Answers:
如果所有日期的宽度相同,则可以将日期放入向量中并使用子字符串
Date
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10
输出
[1] "2009" "2010" "2011"
as.numeric(substring(a,7,10))
如评论中所述,可以通过将条目转换为Date
格式并提取年份来实现,例如:
format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y")
format()
的文档,那么您提供的第二个参数就什么也没有说。我应该怎么理解?
?format
:“格式是一种通用函数。除了此处描述的方法外,还有用于日期的方法(请参见format.Date)”。来自?format.Date
:“ ##类'Date'的S3方法format(x,...)[其中...表示]从或传递给其他方法的其他参数,包括as.character和as.Date方法的格式。 ”。另请参阅中的第一个示例?format.Date
。
library(lubridate)
a=mdy(b)
year(a)
https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html http://vita.had.co.nz/papers/lubridate.pdf
如果您使用的是date
包,则可以轻松完成此操作。
library(date)
Date <- c("01/01/2009", "01/01/2010", "01/01/2011", "01/01/2012")
Date <- as.date(Date)
Date
# [1] 1Jan2009 1Jan2010 1Jan2011 1Jan2012
date.mdy(Date)$year
# [1] 2009 2010 2011 2012
## be aware that these are now integers and thus different methods may be invoked:
str(date.mdy(Date)$year)
# int [1:4] 2009 2010 2011 2012
summary(Date)
# First Last
# "1Jan2009" "1Jan2012"
summary(date.mdy(Date)$year)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 2009 2010 2010 2010 2011 2012
format
提取“年份”