删除整列的部分值

时间:2014-08-04 13:07:36

标签: r date

如果a有一个如下的向量:

REF_YEAR
1994-01-01
1995-01-01
1996-01-01

如何删除部分" -01-01",以便我只获得整列的年份?

3 个答案:

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