我有一个如下数据框:
Name: /physical_device:GPU:0 Type: GPU
Name: /physical_device:GPU:1 Type: GPU
如何从此数据框中找到n个最大值? 我们可以轻松地从向量中找到前n个。有什么好的方法可以从数据帧中找到前n个? 非常感谢。
答案 0 :(得分:1)
也许您可以检查stack
N=2
sort(stack(df)$values, decreasing=TRUE)[1:N]
[1] 10.884644 9.912067
答案 1 :(得分:0)
<!--START OF MAP-->
<div class="mymap col-lg-8 col-md-12 col-sm-12">
<!--START OF DROPDOWN-->
<div class="search-options">
<div class="dropdown">
<select class="select-box">
<option>North Island</option>
<option>South Island</option>
</select>
</div>
<div class="radio-buttons">
<form>
<input class="radio" type="radio" name="option" value="track" checked> Track<br>
<input class="radio" type="radio" name="option" value="Hut"> Hut<br>
<input class="radio" type="radio" name="option" value="Campsite"> Campsite<br>
</form>
</div>
</div>
<!--END OF DROPDOWN-->
<!--START OF LEAFLET MAP-->
<div id="mapContainer"></div>
<!--END OF LEAFLET MAP-->
</div>
并将其转换为向量,unlist
并找到最大值。因此,对于前两个值,我们可以做到
sort
如果是矩阵,则不需要tail(sort(unlist(df, use.names = FALSE)), 2)
#[1] 9.581705 9.591726
unlist
数据
tail(sort(as.matrix(df)), 2)
答案 2 :(得分:0)
您可以使用tidyr::gather()
和dplyr::top_n()
。
首先使用gather(key, value)
收集一列中的每一列,然后使用top_n()
过滤前n个元素。例如top-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