r - 根据指定列中的最小值从数据框中获取 X 行;并在关系中随机选择

标签 r

dplyr 中的 top_n 几乎是我想要的;然而,当有关系时,它会返回全部,但我希望它在关系中随机选择以满足我的 2 行截止。

top_number=4
x <- c(1, 2, 3, 3, 6, 6, 6)
y <- c(3, 2, 5, 1, 2, 3, 3)
xy <- data.frame(x, y) 
xy
xy_1 <- dplyr::top_n(xy, top_number, wt = x)
xy_1

请注意,三个 6 应始终在 x 中选择,然后随机选择应在两个 3 中。
使用 tidyverse 解决方案会很好。

最佳答案

另一种选择可能是:

xy %>%
 top_n(top_number, wt = x) %>%
 sample_n(top_number)

为了解决更新的问题,添加 purrr :
xy %>%
 top_n(top_number, wt = x) %>%
 add_count(x, name = "n_all") %>%
 add_count(x, y) %>%
 group_split(n) %>%
 map_dfr(~ mutate(., cond = if_else(n != n_all, 1, top_number)) %>%
          sample_n(cond) %>%
          select(x, y))

关于r - 根据指定列中的最小值从数据框中获取 X 行;并在关系中随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59634966/

相关文章:

r - 如何将 data.frame 强制转换为 R 中的稀疏矩阵

r - 将连续的 brewer 调色板作为 ggplot2 的图例进行插值

R中的复制函数返回NULL

r - 如何将变量名粘贴到 R `plot`

R - 在每个数据框行上应用 lm

r - 如何更改四开本幻灯片中的文字颜色?

r - R : Leaving out undefined columns when subsetting a dataframe

R:使用 ID/名称提取前 n 个值

r - 如何取消列出 R 嵌套列表中的任意级别?

r - 让 Rscript 读取或从标准输入获取输入