r - Filter grouped data -
i have data.frame looks this
date mean sum max min saison jahr 1 1995-09-01 00:00:00 2.370833 56.9 7.4 0 s 1995 2 1995-09-01 01:00:00 2.225000 53.4 7.4 0 s 1995 3 1995-09-01 02:00:00 2.091667 50.2 7.4 0 s 1995 4 1995-09-01 03:00:00 1.929167 46.3 7.4 0 s 1995 5 1995-09-01 04:00:00 1.745833 41.9 7.4 0 s 1995 6 1995-09-01 05:00:00 1.558333 37.4 7.4 0 s 1995 .... with dplyr package able extract highest sum every saison , jahr:
group_by(.data = dataframe,jahr,saison) summarise(gjahrsaison_24, hoechsterniederschlag = max(sum)) do have idea how extract ten(!) highest sums every jahr , saison?
you can use slice arrange
library(dplyr) df1 %>% group_by(jahr, saison) %>% arrange(desc(sum)) %>% slice(1:10) or filter min_rank/dense_rank
df1 %>% group_by(jahr, saison) %>% filter(dense_rank(sum)<=10) similar options using data.table are
library(data.table)#v1.9.5+ setdt(df1)[order(-sum), .sd[1:10], = .(jahr, saison)] or
setdt(df1)[, .sd[frank(sum, ties.method='first') <=10], = .(jahr, saison)] or using sqldf
library(sqldf) sqldf('select * df1 rowid in (select rowid df1 jahr = i.jahr , saison=i.saison order sum desc limit 10) order i.jahr, i.saison, i.sum desc') or base r
df1[with(df1, ave(sum, saison, jahr, fun=function(x) rank(-x, ties.method='first'))<=10),]
Comments
Post a Comment