如何使用外卡按日期分组?

时间:2015-04-13 16:42:25

标签: r date subset

我有一个数据框:

$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.我正在尝试创建一个数据框,或仅包含4月(04)行的数据的子集。我尝试过一些代码,例如

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试

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

或转换为&#39;日期&#39;类和使用format

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

答案 1 :(得分:1)

你不应该为此使用字符串处理。使用Date类:

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