我有一个如下所示的数据框:
df <- data.frame(site=paste0('site', sort(rep(1:5, 20))),
date=as.Date(paste0(sample(1:28, 100, replace=T), '/',
sample(1:12, 100, replace=T), '/',
2013),
'%d/%m/%Y'),
count=rep(seq(1, 1000, length.out=20), 10))
对于每个站点,我需要最早的时间日期count
> 500。换句话说,计数> 最大计数的 50% 的第一个日期。
解决方案plyr
.
如果您想要 count > 500 的第一个日期:
ddply(df, .(site), summarise, date=min(date[count>500]))
如果您想要 count > 50%*max(count) (对于每个站点)的第一个日期:
ddply(df, .(site), summarise, date=min(date[count>max(count)*0.5]))
这里两者给出相同的结果:
site date
1 site1 2013-01-15
2 site2 2013-02-04
3 site3 2013-03-13
4 site4 2013-02-04
5 site5 2013-01-07
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)