【发布时间】:2018-06-14 19:27:37
【问题描述】:
从 1950 年到 2017 年,我有这种格式的每日温度 Data
我需要计算融雪开始日期定义为当日气温低于 0 摄氏度时,在 3 月至 5 月的最后 5 天之后,日气温高于 0 摄氏度的第一天. 到目前为止我的代码:
df1<-read.csv("temp.csv")
require(dplyr)
# applying the condition to check each temperature value
df1$boolean<- ifelse(df1$temp<0.0 , 1, 0)
#computing the total sum < 0 and the start and end date
snow<-df1 %>%
mutate(boolean = ifelse(is.na(boolean), 0, boolean)) %>%
group_by(group = cumsum(c(0, diff(boolean) != 0))) %>%
filter(boolean == 1 & n() > 1) %>%
summarize("Start Date"=min(as.character(date)),
"End Date"=max(as.character(date)),
"Length of Run"=n()) %>%
ungroup() %>%
select(-matches("group"))
colnames(snow)[3] <- 'length'
# subset length that greater >5
obs<-subset(snow,length >=5)
上面的代码为我提供了部分解决方案(如果进一步手动编辑,我将获得符合我定义的理想解决方案)我只对每年的一个发病日期感兴趣。我需要一些关于如何编辑此代码以根据上述定义计算开始日期的进一步指导。
我有多个位置,因此手动编辑这不是理想的解决方案。 您的帮助将不胜感激
【问题讨论】:
-
更多实际包含您正在寻找的案例的数据会有所帮助
-
请阅读How to Create a Complete, Minimal, and Verifiable Example 并更新您的帖子。我们特别需要您发布足够的数据,以便我们弄清楚如何计算融雪开始日期。
-
我添加了一部分数据
-
您能否更具体地谈谈极端情况?比如三五月份没有低于 0 的五天?
-
由于位置的原因,我预计我的最后五天将在三月或四月或五月发生。因此不必太担心