无法在 R 中将日期转换为日期 class

Can't convert date to date class in R

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

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

当我检查 class(date) 时它是函数。

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

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

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

其次,如果您想检查列的 class,您需要使用数据框名称来引用它(除非您已经 attach 编辑了您永远不应该做的数据框。)

class(weatherDump$date) 

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

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)