【发布时间】:2018-10-24 05:35:06
【问题描述】:
我有一个数据框,例如:
set.seed(1)
df <- data.frame(
sample = 1:50,
value = runif(50),
group = c(rep(NA, 20), gl(3, 10)))
我想根据值选择前 10 个样本。但是,如果有一个对应于样本的组,我只想包含该组中的一个样本。如果 group == NA,我想包括所有这些。按值排列 df 如下所示:
df_top <- df %>%
arrange(-value) %>%
top_n(10, value)
sample value group
1 46 0.7973088 3
2 49 0.8108702 3
3 22 0.8394404 1
4 2 0.8612095 NA
5 27 0.8643395 1
6 20 0.8753213 NA
7 44 0.8762692 3
8 26 0.8921983 1
9 11 0.9128759 NA
10 30 0.9606180 1
我想在我的数据框中包含样本 36、22、2、20、11 和接下来的五个最高值,这些值继续符合模式。我该如何做到这一点?
【问题讨论】:
标签: r dataframe dplyr grouping