按组计算高于特定阈值的值

7

我有一个相当庞大的历史气象站csv数据集(一组气象站的每日风速数据,适用于某个地区),我需要计算每个气象站每月平均超过6米/秒的天数。这些站点包含的年份不同。下面是数据集的示例:

head(windspeed_PR)

  STN    Year Month Day WDSP WDSP.ms
1 860110 1974     6  19  9.3   4.784
2 860110 1974     7  13 19.0   9.774
3 860110 1974     7  22  9.9   5.093
4 860110 1974     8  20  9.5   4.887
5 860110 1974     9  10  3.3   1.698
6 860110 1974    10  10  6.6   3.395

因此,我基本上需要计算每个月份和每个气象站(STN)中有多少WDPS.ms值大于6,然后计算每个气象站每月的平均天数。
请问如何计算此值(最好使用R)?

3
请提供一个最小可复现的示例。示例不一定是您的真实数据,但您需要提供一个可复制的示例。请参阅如何创建R可复制示例 - Jota
1个回答

18

这相当简单。

使用dplyr

library(dplyr)
windspeed_PR %>%
    group_by(STN, Year, Month) %>%
    summarize(n_days = n(),
              n_gt6 = sum(WDSP.ms > 6),
              p_gt6 = n_gt6 / n_days)

对于每个站点、年份和月份,这将返回测量数量、大于6的测量数量以及它们的商(大于6的测量比例)。

从您的问题中我不清楚是否需要进一步总结(例如,折叠年份),但这应该为任何额外工作提供一个很好的起点。


1
是的,上面的回答更好。当我第一次看到这个问题时,它非常开放和模糊。似乎在过去20分钟内已经编辑了大约6次。 - iSkore
是的,从编辑历史记录来看,它已经有了一些快速的改进和清晰度。 - Gregor Thomas
确实哈哈。谢谢你的回复,我还没听说过dplyr。将来一定会使用它。 - iSkore
1
感谢Gregor和iSkore的帮助!事实上,我是Stackoverflow的新手,仍在学习如何以最清晰、最具体的方式发布问题。 - Xavier de Lamo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接