【发布时间】:2018-01-15 20:57:46
【问题描述】:
我正在尝试找到一种方法将 data.frame 子集化为仅来自单个月但多年的记录(即仅来自 4 月但 1900 年、1901 年、1902 年等年的数据)。我正在使用 as.Date 函数将日期信息放入日期类中。这是一个例子:
require("adehabitatHR")
data(teal)
Tdf <- teal
Tdf$date <- as.Date(Tdf$date, "%Y%m%d")
现在要对其进行子集化,我尝试使用和不使用通配符将日期设置为等于月份值:
TdfFeb <- Tdf[Tdf$date == "*-02-*"]
TdfFeb <- Tdf[Tdf$date == "-02-"]
但是,在这两种情况下,我都会收到以下错误:charToDate(x) 中的错误:字符串不是标准的明确格式;这表明 R 没有将我输入的内容识别为合法的日期格式(我也尝试过使用“/”和“。”而不是“-”;所有结果都相同。
我也尝试过将其设置为模式
TdfFeb <- Tdf[Tdf$date == pattern = "-02-"]
当然这也不起作用,由于模式后出现意外的“=”而导致错误。
我意识到,对于这个特定的数据集,只需做一个日期范围就可以了,因为只有 1901 年 2 月的数据;但是,正如我上面所说,我希望能够以这种方式提取多年的数据。如果有人以前遇到过这种情况或有任何建议,我将不胜感激。
【问题讨论】:
-
试试
lubridate包,它有一个函数month(),它将从日期对象中以整数形式返回月份。