Дождевые явления и интенсивность нескольких метеостанций - PullRequest
0 голосов
/ 24 января 2019

Моя цель - рассчитать количество осадков, произошедших за сезон, продолжительность и интенсивность события (общее количество осадков в соответствующем событии дождевых осадков). Я сделал это, но код работает на одной станции, а не на всех.

Мой код работает на одной станции, и я хочу, чтобы этот код, который я сделал, работал на всех метеостанциях за один раз, иначе я должен сделать это на каждой станции одна за другой. Мы можем сделать функцию (myFun), чтобы сделать это или зациклить, но я немного новичок в R и никогда не работал с данными станции, поэтому для меня это немного тривиально на данном этапе. Текущий код дает мне вывод CSV дат событий и кумулятивную сумму каждого события, что мне достаточно, но если оно работает на всех станциях одновременно, это было бы хорошо.

Мои данные: У меня есть CSV-файл, который имеет 238 столбцов, первый столбец соответствует дате, а остальные 237 столбцов представляют каждую метеостанцию. Например, ST0001 - это идентификатор станции. Строки 121/122 во фрейме данных представляют значение каждого дня в соответствующем сезоне с ноября по февраль. Значения 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 станций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...