从列中的日期中提取年份

时间:2017-11-06 08:20:42

标签: r

我是R的新手!

我在名为 crimedata

的数据集中有以下列 CMPLNT_FR_DT
CMPLNT_FR_DT
12/31/2015
01/23/2009
10/04/2010
05/31/2015

我需要更改列值,以便日期只包含年份,例如:

CMPLNT_FR_DT
2015
2009
2010
2015

我尝试了解决方案 Extract year from date

但我的错误返回为

format(as.Date(df$CMPLNT_FR_DT, format="%m/%d/%Y"),"%Y")

Error in df$CMPLNT_FR_DT : object of type 'closure' is not subsettable

我不确定我做错了什么。我真的很感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

如果您有一个名为crimedata的数据集,而是使用df(当df未定义为变量时,即"df" %in% ls()返回[1] FALSE),你会得到错误Error in df$CMPLNT_FR_DT : object of type 'closure' is not subsettable。这是因为df()stats包中的函数(这就是为什么使用df作为变量名称可能不是一个好习惯)。

如果您将其更改为format(as.Date(crimedata$CMPLNT_FR_DT, format="%m/%d/%Y"),"%Y"),则会有效。

还有另一个解决方案,使用包lubridate,它将年份作为数字返回,这可能很有用:

library(lubridate)
year(as.Date(crimedata$CMPLNT_FR_DT, format = "%m/%d/%Y"))