В прошлом я делал подобные вещи в SQL, но я новичок в R, и заранее прошу прощения, если это основной вопрос.
Как бы я агрегировал данные, основываясь сначала на подсчете 1 класса, а затем применяя функцию к этим подсчетам, чтобы снова их агрегировать?
Допустим, мои данные:
df<-data.frame(ID1=c(1,1,1,1,1,2,2,2,2,3,3,3,3,3),
ID2=c(201,201,203,203,204,201,202,204,204,201,203,203,204,203))
во-первых, я бы агрегировал ID2 по счетам, чтобы получить фрейм данных, который выглядел бы так:
df2<-data.frame(ID1=c(1,1,1,2,2,2,3,3,3),
ID2=c(201,203,204,201,202,204,201,203,204),
counts=c(2,2,1,1,1,2,1,3,1))
, после этого я бы применил функцию для агрегирования по ID1 (это в основном продуктдоля отсчетов, поэтому для ID = 1 это будет (2/5) * (2/5) * (1/5), для ID = 2 это будет (1/4) * (1/4) * (2/4) и т. Д. Таким образом, итоговый фрейм данных будет выглядеть следующим образом:
df3<-data.frame(ID1=c(1,2,3), f=c(0.032, 0.03125, 0.024))
Как можно выполнить несколько агрегаций, подобных этой, и агрегации, используя такую же функцию, как в SQL?