超过最大百分比的日期

时间:2013-03-14 21:50:05

标签: r

我有一个如下所示的数据框:

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&gt; 500.换句话说,计数的第一个日期>最大计数的50%。

1 个答案:

答案 0 :(得分:3)

plyr的解决方案。

如果您想要计数的第一个日期&gt; 500:

ddply(df, .(site), summarise, date=min(date[count>500]))

如果您想要计数的第一个日期&gt; 50%*最大(计数)(每个站点):

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