最佳答案
我刚开始使用 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
但这是一个 对我来说有点难以理解。有没有更好的方法来做这种总结?