我现在需要计算各月降雨天数为> =1.0毫米。所以在最后。我会有两列(每年每个月,每个月的总天数降雨量> = 1.0mm)
1)所以dat.int $ date是一个Date对象。第一步是您需要创建一个提取年份的新列dat.int$yearmon
,例如,使用zoo::yearmon
Extract month and year from a zoo::yearmon object
require(zoo)
dat.int$yearmon <- as.yearmon(dat.int$date, "%b %y")
2)其次,你需要做一个总结操作(建议您使用plyr或rain>=1.0
较新的dplyr)由yearmon汇总。我们来命名我们的结果列rainy_days。
如果你想存储rainy_days列回dat.int
数据框,您使用的transform
代替summarize
:
ddply(dat.int, .(yearmon), transform, rainy_days=sum(rain >= 1.0))
否则,如果你确实需要一个新的汇总数据帧:
require(plyr)
rainydays_by_yearmon <- ddply(dat.int, .(yearmon), summarize, rainy_days=sum(rain >= 1.0))
print.data.frame(rainydays_by_yearmon)
yearmon rainy_days
1 Jan 1975 14
2 Feb 1975 12
3 Mar 1975 13
4 Apr 1975 6
5 May 1975 6
6 Jun 1975 5
...
355 Jul 2004 3
356 Aug 2004 7
357 Oct 2004 14
358 Nov 2004 16
359 Dec 2004 19
注意:您可以使用普通老R来完成上述操作,而不使用zoo
或plyr/dplyr
包。但是,不妨教你更好,更具扩展性,可维护的代码习惯用法。
使用'dput(yourdataframe)'发布一些可重复的R代码。 *“数据与SEAS软件包喜欢的格式相同”*不可接受。 – smci 2014-10-20 20:01:29
你好,我不知道你在问我什么..但我编辑..所以希望它更好理解..这是我的第一次尝试编程..所以请原谅我,如果不正确表达的东西正确的方式 – Lam 2014-10-20 20:17:39