2015-05-20 30 views
-1

我有一个相当大的历史气象站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 

所以,我基本上都需要算值多少WDPS.ms比6一年的每和每个站(STN)高,然后计算每个气象站每月的平均天数

请问我有关于如何计算此值的建议(最好在R中)?

+2

请提供一个最小可重现的例子。这个例子不一定是你真实的数据,但你需要提供一个可重复的例子。请参阅[如何制作R可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Jota

回答

6

这是相当简单的。

使用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

+0

是的,看着编辑历史,它有一些快速的改进和清晰度。 – Gregor

+0

确实哈哈。也谢谢你的回应,没有听说过dplyr。将来肯定会使用它。 – iSkore