Как рассчитать накопленную сумму за определенный порог? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть набор данных суточных измерений температуры, и я хочу рассчитать накопленную сумму температур более 32 ° C.Я не хочу знать, через сколько дней температура превышает 32 sum(tmax_mean > 32), но накапливаю значения температуры более 32. Итак, если температура была 31,33,34, ..., код должен вычислять 0 + 1 +2 + ...

tmax_mean <- c(31.3,32.1,33.5,29,34.2)

Я пробовал sum(tmax_mean > 32), но это говорит только о количестве дней, когда температура превышает 32 ° C, что в данном случае равно 3.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

С базой R

sum(subset(tmax_mean, tmax_mean > 32) - 32)
0 голосов
/ 24 декабря 2018

Мы можем использовать

sum((tmax_mean - 32)[tmax_mean > 32])
# [1] 3.8

Здесь tmax_mean > 32 помогает установить необходимые термины, в то время как tmax_mean - 32 в этих случаях являются нашими слагаемыми.


Кроме того,

sum((tmax_mean - 32) * (tmax_mean > 32))
# [1] 3.8

, используя ту же логику и тот факт, что number * TRUE равен number, а number * FALSE равен 0:

3 * TRUE
# [1] 3
3 * FALSE
# [1] 0

Таким же образом, используя умножение матриц %*% (поскольку и tmax_mean - 32, и tmax_mean > 32 можно рассматривать как векторы),

(tmax_mean - 32) %*% (tmax_mean > 32)
#      [,1]
# [1,]  3.8

, который теперь является матрицей 1x1,что может или не может быть приемлемым в вашем случае.

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