我有一个带有条目的字符列表,例如“31DEC2005”。我想将年份提取为整数2005,以及日期月份“31DEC”。请建议一种方法。谢谢。
答案 0 :(得分:2)
请参阅?substr
:
substr("31DEC2005",1,5)
自动化:
start<-c(1,3,6)
stop<-c(2,5,9)
lapply(seq(1,3),function(i)substr("31DEC2005",start[i],stop[i]))
答案 1 :(得分:2)
我认为函数Date可能比正则表达式更好,请尝试:
as.Date("31DEC2005", "%d%b%Y")
答案 2 :(得分:1)
以下是将年份提取为整数的另一种方法:
x <- c("31DEC2005", "28FEB2012", "16JUL2002", "01JAN2007")
sub("[[:digit:]]+[[:alpha:]]+","", x)
#[1] "2005" "2012" "2002" "2007"
使用data.table
包中的日期函数从@ bartektartanus的解决方案中提取日期月最简单:
y <- as.Date(x, "%d%b%Y")
library(data.table)
month(y)
#[1] 12 2 7 1
mday(y)
#[1] 31 28 16 1
paste(mday(y), month(y), sep = "-")
#[1] "31-12" "28-2" "16-7" "1-1"
此解决方案也可以使用一年:
year(y)
#[1] 2005 2012 2002 2007