【发布时间】:2019-11-13 02:49:01
【问题描述】:
我有一个数据框,它是从 1961 年到 2018 年每月分辨率的气象测量时间序列。我对测量月平均温度的变量感兴趣,因为我需要夏季的多年平均温度。
为此,我必须从“DateVaraible”列中过滤第五和第六位数字,即月份。 时间列中的值的格式如下 “19610701”。所以我需要1961年之后的07(七月)。
我开始为其他目的编码 1 个月,所以我没有尝试任何值得一提的事情。我想 .grepl 可以完成这项工作,但我不知道“匹配”运算符是如何工作的。
所以我开始使用这个有效的代码。
summersmonth<- Df[DateVariable %like% "19610101" I DateVariable %like% "19610201"]
我期待这样的代码
summermonths <- Df[DateVariable %like% "**06**" I DateVariable%like% "**07**..]
这样所有月份数字从 06 到 09 的条目都保存在新的数据框 summermonths 中。
提前感谢您对我的问题的任何回复或反馈。
更新
感谢您的回答,我得到了第一部分,即将变量转换为 as.date 格式为“月”(Class=char)
现在我需要选择从 Juni 到 September 的月份。
获得我想要的结果的一种可怕方法是在之后执行几个subset 和一个rbind。
Sommer1<-subset(Df, MonthVar == "Mai")
Sommer2<-subset(Df, MonthVar == "Juli")
Sommer3<-subset(Df, MonthVar == "September")
SummerTotal<-rbind(Sommer1,Sommer2,Sommer3)
我会很高兴看到这篇文章以整洁的方式编写。
更新 2 - 解决方案
这里是整洁的方式,就像这里Using multiple criteria in subset function and logical operators
Veg_Seas<-subset(Df, subset = MonthVar %in% c("Mai","Juni","Juli","August","September"))
【问题讨论】:
-
如果
DateVariable总是遵循格式:“YYYYMMDD”,你可以使用substr:summermonths <- Df[substr(DateVariable, 6, 6) %in% 6:9, ] -
重新编辑,
Mean_Temp$MESS_DATUM_BEGINN是您的日期变量(转换为日期)上month函数的结果吗? -
是的,Mean_Temp$MESS_DATUM_BEGINN 是函数的结果。(所有月份)我第一次尝试了你的函数,但由于
month中缺少 s,它没有工作,因此我使用了as.Date,没有使用month,它给了我一个1961-01-01格式的结果。今天我用months再次尝试了你的功能。结果是带有月份名称的字符类。现在我想知道如何将它们作为 char 进行子集化。或编号。价值
标签: r dataframe time-series subset as.date