如何使用通配符按日期进行子集化?

How can I subset by date, using a wild card?

我有一个数据框:

$Date, $name, $value
1949-05-01, Hurricane, 5
1950-02-01, Hurricane, 6
1950-03-01,
1950-04-01,
1950-05-01,
1951-02-01,
1951-03-01,
1951-04-01,

这些日期一直到 2015 年,测量值为 02、03、04 和 05 月。我正在尝试创建一个数据框或此数据的子集,其中仅包含四月 (04) 的行).我尝试了一些代码,例如

aprilSWE <- hurricane.df[grep("^04", hurricane.df$Date),]

但我不确定我是否正确使用了^。由于月份“04”位于日期字符串的中间,我如何使用通配符 select 任何以月份“04”作为日期的行?

谢谢!

尝试

hurricane.df[grep('^\d{4}-04', hurricane.df$Date),]

或转换为'Date' class并使用format

hurricane.df[format(as.Date(hurricane.df$Date), '%b'=='Apr',]

您不应该为此使用字符串处理。使用 Date class:

DF <- read.table(text = "Date, name, value
    1949-05-01, Hurricane, 5
    1950-02-01, Hurricane, 6
    1950-03-01, Hurricane, 7
    1950-04-01, Hurricane, 8
    1950-05-01, Hurricane, 9
    1951-02-01, Hurricane, 10
    1951-03-01, Hurricane, 11
    1951-04-01, Hurricane, 12", header = TRUE, sep =",")

DF$Date <- as.Date(DF$Date)
DF[months(DF$Date) == "April",]
#        Date       name value
#4 1950-04-01  Hurricane     8
#8 1951-04-01  Hurricane    12