根据变量内字符串的数值对数据框进行分组

m_r*_*rub -1 r time-series subset dataframe as.date

我有一个数据框,该数据框是1961年至2018年间每月分辨率的气象测量的时间序列。我对测量月平均温度的变量感兴趣,因为我需要夏季的多年平均温度。

为此,我必须从“ DateVaraible”列中过滤出第五和第六位数字,即月份。时间列中的值的格式如下:“ 19610701”。所以我需要1961年以后的07(Juli)。

我开始为其他目的编码1个月,所以我没有尝试任何值得一提的事情。我猜.grepl可以完成这项工作,但是我不知道“匹配”运算符的工作方式。

因此,我从这个有效的代码开始。

summersmonth<- Df[DateVariable %like% "19610101" I DateVariable %like% "19610201"]
Run Code Online (Sandbox Code Playgroud)

我期待这样的代码

summermonths <- Df[DateVariable %like% "**06**" I DateVariable%like% "**07**..]
Run Code Online (Sandbox Code Playgroud)

这样,所有月份数字从06到09的条目都将保存在新的数据框summermonths中。

在此先感谢您对我的问题的任何答复或反馈。

更新资料

感谢您的回答,我得到了第一部分,这是将变量转换为as.date格式为“ month”(Class = char)的a现在,我需要选择Juni到September的月份。一个可怕的方式来获得我想要的结果是做一些subsetrbind之后。

Sommer1<-subset(Df, MonthVar == "Mai")
Sommer2<-subset(Df, MonthVar == "Juli")
Sommer3<-subset(Df, MonthVar == "September")

SummerTotal<-rbind(Sommer1,Sommer2,Sommer3)
Run Code Online (Sandbox Code Playgroud)

我很高兴看到这篇文章写得整整齐齐。

更新2-解决方案

这是整齐的方法,例如在子集函数和逻辑运算符中使用多个条件

Veg_Seas<-subset(Df, subset = MonthVar %in% c("Mai","Juni","Juli","August","September"))
Run Code Online (Sandbox Code Playgroud)

Cat*_*ath 7

您可以将日期变量转换为日期(格式)并采用月份:

allmonths <- month(as.Date(Df$DateVariable, format="%Y%m%d"))
Run Code Online (Sandbox Code Playgroud)

请注意,您的列最初是导入的,因为factor您需要character先将其转换为:

allmonths <- month(as.Date(as.character(Df$DateVariable), format="%Y%m%d"))
Run Code Online (Sandbox Code Playgroud)

然后,您可以检查是否是夏季:

summersmonth <- Df[allmonths %in% 6:9, ]
Run Code Online (Sandbox Code Playgroud)

例:

as.Date("20190702", format="%Y%m%d")
[1] "2019-07-02"

month(as.Date("20190702", format="%Y%m%d"))
[1] 7
Run Code Online (Sandbox Code Playgroud)