我有一个数据框:
$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”的任何行作为日期?
谢谢!
答案 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