Я новичок в dplyr, Мне нужно вычислить различные значения в группе. Вот пример таблицы:
data=data.frame(aa=c(1,2,3,4,NA), bb=c('a', 'b', 'a', 'c', 'c'))
Я знаю, что могу делать такие вещи, как:
by_bb<-group_by(data, bb, add = TRUE)
summarise(by_bb, mean(aa, na.rm=TRUE), max(aa), sum(!is.na(aa)), length(aa))
Но если я хочу подсчет уникальных элементов?
Я могу сделать:
> summarise(by_bb,length(unique(unlist(aa))))
bb length(unique(unlist(aa)))
1 a 2
2 b 1
3 c 2
и если я хочу исключить NAs, я делаю:
> summarise(by_bb,length(unique(unlist(aa[!is.na(aa)]))))
bb length(unique(unlist(aa[!is.na(aa)])))
1 a 2
2 b 1
3 c 1
Но это немного нечитаемо для меня. Есть ли лучший способ сделать такое обобщение?