我有一个如下所示的数据框:
df <- data.frame(Site=rep(paste0('site', 1:5), 50),
Month=sample(1:12, 50, replace=T),
Count=(sample(1:1000, 50, replace=T)))
我想删除所有站点的计数始终小于每月最大计数的 5% 的所有站点。
所有站点的最大每月计数为:
library(plyr)
ddply(df, .(Month), summarise, Max.Count=max(Count))
如果将计数 1 分配给站点 5,则其计数始终小于所有站点每月最大计数的 5%。因此,我希望删除 site5。
df$Count[df$Site=='site5'] <- 1
但是,在为 site2 分配新值后,它的一些计数小于最大每月计数的 5%,而另一些则 >5%。因此我不希望 site2 被删除。
df$Count[df$Site=='site2'] <- ceiling(seq(1, 1000, length.out=20))
如何对数据框进行子集化以删除计数始终<最大每月计数的 5% 的任何站点?如果问题不清楚,请告诉我,我会修改。