如果a有一个如下的向量:
REF_YEAR
1994-01-01
1995-01-01
1996-01-01
如何删除部分" -01-01",以便我只获得整列的年份?
答案 0 :(得分:0)
如果您的矢量格式为Date
s,则可以执行以下操作:
x <- as.Date("2001-01-01")
format(x, "%Y")
#[1] "2001"
对于您的示例数据:
# Your sample data:
df <- read.table(header=TRUE, text = "REF_YEAR
1994-01-01
1995-01-01
1996-01-01", stringsAsFactors = FALSE)
将您的数据转换为日期格式:
df$REF_YEAR <- as.Date(df$REF_YEAR) # skip this step if it's already formatted as Date
现在转换为年份格式:
df$REF_YEAR <- format(df$REF_YEAR, "%Y")
或
transform(df, REF_YEAR = format(REF_YEAR, "%Y"))
两种情况都有结果:
df
# REF_YEAR
#1 1994
#2 1995
#3 1996
您只需要确保您的数据采用Date
格式(使用as.Date()
进行转换)。
答案 1 :(得分:0)
这可以使用正则表达式完成。您可以保留前四位数或消除后六位数。以下是您使用第二个选项的方法。
ref_year = as.character("1994-01-01")
ref_year_only = substr(ref_year, 1, nchar(ref_year) - 6) ; ref_year_only
另外,请在堆栈上提问时表现出一些努力。
答案 2 :(得分:0)
如果不转换为Date
,您也可以尝试:
library(stringr)
df$YEAR <- str_extract(df$REF_YEAR, perl('\\d+(?=-)'))
df$YEAR
#[1] "1994" "1995" "1996"