无法将日期转换为R中的日期类

时间:2019-12-15 23:32:02

标签: r subset as.date

我正在尝试根据日期条件制作一个子集。我上传了一个数据集,并尝试使用以下代码将日期从POSIXct转换为日期类:

as.Date(weatherDump$date, "%Y-%m-%d")

似乎将日期转换为y / m / d,但是当我尝试运行该子集时出现错误:

weather2013to2018 <- subset(weatherDump, date >= "2013-01-01" & date<= "2017-12-31")
Warning messages:
1: In Ops.factor(date, "2013-01-01") : ‘>’ not meaningful for factors
2: In Ops.factor(date, "2017-12-31") : ‘<’ not meaningful for factors

当我检查班级(日期)时,它是功能。

我想我在日期转换上出错了吗?

1 个答案:

答案 0 :(得分:1)

首先,如果对对象执行任何操作,则需要将其分配回去,以反映更改。

weatherDump$date <- as.Date(weatherDump$date, "%Y-%m-%d")
#In this case you can only use as.Date
#weatherDump$date <- as.Date(weatherDump$date)

第二,如果要检查列的类,则需要使用数据框名称来引用它(除非您已attach编入了您永远不应该使用的数据框。)

class(weatherDump$date) 

如果要比较日期,第三点也是最重要的一点,您需要确保要与之比较的对象也都是班级日期(而不是字符)。

weather2013to2018 <- subset(weatherDump, date >= as.Date("2013-01-01") & 
                                         date<= as.Date("2017-12-31"))

lubridate的另一种选择是使日期的处理更加容易。

library(lubridate)
weatherDump$date <- ymd(weatherDump$date)
weather2013to2018 <- subset(weatherDump, year(date) >= 2013 & year(date) <= 2017)