我有一个有关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"
首先,我真的很高兴,但是当我再次查看数据集中的行时,它没有转换日期...
有人可以帮我吗?
谢谢!
答案 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