我有以下数据集
# Dataset
x<-tbl_df(data.frame(locus=c(1,2,2,3,4,4,5,5,5,6),v=c(1,1,2,1,1,2,1,2,3,1),rpkm=rnorm(10,10)))
如果我使用以下命令
# Subset
x%>%group_by(locus)%>%summarize(max(rpkm))
我获得了
locus max(rpkm)
1 9.316949
2 10.273270
3 9.879886
4 10.944641
5 10.837681
6 13.450680
虽然我想获得
locus v max(rpkm)
1 1 9.316949
2 1 10.273270
3 1 9.879886
4 2 10.944641
5 1 10.837681
6 1 13.450680
所以,我想在输出表中有“v”对应的行。 有可能吗?
答案 0 :(得分:3)
尝试:
x %>% group_by(locus) %>%
summarize(max(rpkm), v = v[which(rpkm==max(rpkm))])
答案 1 :(得分:3)
您可以使用top_n
功能
# with set.seed(15)
x %>% group_by(locus) %>% top_n(1, rpkm)
# locus v rpkm
# 1 1 1 10.258823
# 2 2 1 11.831121
# 3 3 1 10.897198
# 4 4 1 10.488016
# 5 5 2 11.090773
# 6 6 1 8.924999
答案 2 :(得分:0)
试试这个:
x %>% group_by(locus) %>% filter(rpkm==max(rpkm))