如何计算超过一定阈值的累计和?

时间:2018-12-23 21:13:45

标签: r

我有一个每日温度测量数据集,并想计算32°C以上的温度累积总和。我不想知道温度超过32 model = Network() loaded_dict = checkpoint['model_state_dict'] prefix = 'classifier.' n_clip = len(prefix) adapted_dict = {k[n_clip:]: v for k, v in loaded_dict.items() if k.startswith(prefix)} model.load_state_dict(adapted_dict) 的天数,但会累积超过32的温度值。因此,如果温度为31,33,34,...,代码应计算0+ 1 + 2 + ...

sum(tmax_mean > 32)

我已经尝试过tmax_mean <- c(31.3,32.1,33.5,29,34.2) ,但这只能告诉我温度超过32°C的天数,在这种情况下为3天。

2 个答案:

答案 0 :(得分:6)

我们可能会使用

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 * TRUEnumbernumber * FALSE0的事实:

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

以相同的方式,使用矩阵乘法%*%(因为tmax_mean - 32tmax_mean > 32都可以看作是向量),

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

现在是1x1矩阵,在您的情况下可能可接受,也可能不可接受。

答案 1 :(得分:0)

以R为底

sum(subset(tmax_mean, tmax_mean > 32) - 32)