【问题标题】:flag the 10 highest and 10 lowest values from a column in r标记 r 中列的 10 个最高值和 10 个最低值
【发布时间】:2021-02-02 08:40:04
【问题描述】:

我正在寻找 r 中的命令,通过它我可以标记 10(或 n)个最高值和 10 个最低值。我发现this post 与我正在尝试做的事情非常相似。该帖子表明 is.max 可以做我想做的事,但我在 R 文档中找不到该命令。 它是否已更新为另一个命令? tidyvesedplyr 有没有其他命令我可以试试?

谢谢!

【问题讨论】:

  • is.max是答案is.max <- function(x) seq_along(x) == which.max(x)第一行定义的自定义函数

标签: r dplyr tidyverse


【解决方案1】:
library(tidyverse)

生成数据:

set.seed(666)
rnorm(20) %>% as.data.frame() -> x

# choose breakpont (e.g. top10)
n <- 10 

x %>% arrange(x) %>% 
      mutate(rnum = row_number()) %>% 
      mutate(bottom_n = ifelse(rnum %in% seq(1, n), 1, 0)) %>% 
      mutate(top_n = ifelse(rnum %in% seq( n()-n+1, n()), 1, 0)) %>% 
      select(-rnum) 

在这里,我们首先按升序对值进行排序,并为行号创建一个辅助列。 bottom_n=1 是行号介于 1 和 n 之间的行; top_n 是行号在n()-n+1n() 之间的行,其中n() 是输入向量的长度。

输出:

             . bottom_n top_n
1  -2.21687445        1     0
2  -1.79224083        1     0
3  -1.77023084        1     0
4  -1.72015590        1     0
5  -1.30618526        1     0
6  -0.80251957        1     0
7  -0.58245269        1     0
8  -0.35513446        1     0
9  -0.07582656        1     0
10 -0.04203245        1     0
11  0.13412567        0     1
12  0.34490035        0     1
13  0.75331105        0     1
14  0.75839618        0     1
15  0.78617038        0     1
16  0.85830054        0     1
17  0.86465359        0     1
18  2.01435467        0     1
19  2.02816784        0     1
20  2.15004262        0     1

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 2021-08-22
    • 2020-12-31
    • 2021-11-12
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多