2

次のようなデータフレームがあります。

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))

サイトごとに、count500を超える最も早い日付が必要です。つまり、カウントが最大カウントの50%を超えた最初の日付が必要です。

4

1 に答える 1

3

を使用したソリューションplyr

カウント>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
于 2013-03-14T21:54:30.117 に答える