Вы можете использовать tidyr::gather()
и dplyr::top_n()
.
Сначала соберите каждый столбец в одном столбце, используя gather(key, value)
, и отфильтруйте верхние n элементов, используя top_n()
. Например, топ-5.
library(tidyverse) # dplyr and tidyr
set.seed(10)
mydf <-
data.frame(a = runif(10,0,10),
b = runif(10,1,10),
c = runif(10,0,12))
В gather()
свободно указывайте имя key
и value
.
Вы должны назвать wt
из top_n()
как value
, который вы дали.
mydf %>%
gather(key = "key", value = "value") %>%
top_n(5, wt = value) %>%
arrange(desc(value)) # sort by value
#> key value
#> 1 c 10.38
#> 2 c 10.06
#> 3 c 9.30
#> 4 c 9.25
#> 5 b 8.53
Вы можете получить выходные данные значений top_n с соответствующими именами столбцов .
Однако, если вам нужны только значения, вы можете использовать unlist()
.
unlist(mydf) %>% # optionally, use.names = FALSE
sort(decreasing = TRUE) %>%
.[1:5]
#> c1 c7 c3 c9 b10
#> 10.38 10.06 9.30 9.25 8.53