降雨事件和多个气象站的强度

时间:2019-01-24 13:00:47

标签: r

我的目标是计算一个季节中发生的降雨事件,事件持续时间和事件强度(各个降雨事件中的总降雨)。 我已经做到了,但是代码只能在一个站点上运行。

我的代码在一个气象站上工作,我希望我编写的代码一次可以在所有气象站上工作,否则我必须在每个气象站上一一处理。我们可以创建一个函数(myFun)来执行或循环执行,但是我是R语言的初学者,并且从未使用过站数据,因此在现阶段对我来说这是微不足道的。当前代码为我提供了事件日期CSV的输出以及每个事件的累积总和,这对我来说足够了,但是如果它一次可以在所有电台上使用,那就太好了。

我的数据: 我有一个包含238列的csv文件,第一列对应于日期,其余237列代表每个气象站,例如ST0001是气象站ID。数据框中的121/122行代表从11月到2月的各个季节中每天的值。 NA值为-999。

代码

library(ggplot2)
library(plotly)

data <- read.csv("1979_80.csv", header = TRUE, stringsAsFactor = FALSE, 
    sep = ",")
data$ST0001 = as.numeric(data$ST0001)
data$ST0001[is.na(data$ST0001)] = 0
rainingAtStart <- data$ST0001[1] >0
dif <-c(rainingAtStart,diff(data$ST0001>0))
startEvent <- which (dif>0)
endEvent <- which (dif<0)
if (data$ST0001[length(data[,1])]>0){
  endEvent=c(endEvent,length(data[,1]))
}

X <- data.frame(cbind(startEvent, endEvent,
                      data$Date[startEvent],
                      data$Date[endEvent]))

names(X) <- c("indStart", "indEnd", "eventStart", "eventEnd")
precipByEvent <- apply(X,1,function(X){sum(data$ST0001[X[1]:X[2]])})
X$eventTotal <- precipByEvent

hist(precipByEvent)
summary(X)

write.csv (X, file = "ST0001_1979_80.csv")

当前代码给我一站式结果,分为五列,如下所示: 例如,一个事件。

indStart indEnd  eventStart eventEnd  eventTotal
13        14     11/13/1979 11/14/1979  13.5

我希望有一个csv,它具有所有237个电台的结果。

0 个答案:

没有答案