无法在 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)
我正在尝试根据日期条件创建一个子集。我上传了一个数据集并尝试使用以下代码将日期从 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)