将R中的日期格式从“ dd.mm.yyyy”转换为“ yyyy”

时间:2018-08-30 05:48:32

标签: r date

我有一个有关R中日期转换的问题。我有一个带有日期列的数据集,该日期列表示组织中工作开始的日期,格式为“ dd.mm.yyyy”(例如01.09.2016)(可变的jobstart)。我要计算任期(以工作年限为2018年),我首先需要将日期从dd.mm.yyyy格式转换为yyyy。

我尝试了以下操作:

data$tenure <- as.Date(data$jobstart,format="%d.%m.%Y")
as.Date(data$tenure,format="%Y")

data$tenure <- as.Date(data$jobstart,format="%d.%m.%Y")
format(data$tenure,"%Y")

第一个完全不工作,第二个我得到以下输出:

 [1] "2013" "2011" "2000" "2005" "2016" "1987" "2010" "1985"
 [9] "1994" "1998" "1985" "2006" "2003" "1985" "1985" "1991"
[17] "1987" "2006" "1999" "2010" "2013" "1996" "2018" "2017"
[25] "2016" "2017" "2001" "1999" "1998" "2010" "1995" "2002"
[33] "2017" "1984" "2006" "1995" "2017" "1991" "1995" "1999"
[41] "2017" "2015" "1991" "1986" "2011" "2011" "2017"

首先,我真的很高兴,但是当我再次查看数据集中的行时,它没有转换日期...

有人可以帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

format函数将其转换,但实际上并没有将其存储在任何地方。如果您希望覆盖旧数据,请尝试

data$tenure <- format(data$tenure,"%Y")

或者您可以创建一个全新的列来存储此列,以免丢失数据。

data$tenure_year <- format(data$tenure,"%Y")

单独使用format时,它将返回所有这些日期并将其打印到控制台。当您将它们分配给变量时,它将放置在此处。

希望有帮助!

编辑:要解释为什么您所做的第一次尝试不起作用,是因为as.Date将某物变成了一个日期对象,该对象专门存储日,月和年。因此,如果您只想显示年份,则不能将其存储为日期。尝试使用该函数的方式是,试图告诉它仅将一年读取整个日期,而那永远都行不通。

答案 1 :(得分:0)

也从润滑包装的一年开始:

library(lubridate)
x <- ymd("2018-08-30")

year(x)
# [1] 2018