dplyr总结:如何在输出表中包含所有表列

时间:2015-07-07 19:51:44

标签: r dplyr

我有以下数据集

# 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”对应的行。 有可能吗?

3 个答案:

答案 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))