查找单行

时间:2018-02-27 13:57:09

标签: r

我有一行有20列,有数字数据。现在我想找出3列名称,它在单行中按降序排列。

dd <- data.frame(a=10,b=45,c=67,d=32,e=5,f=46,g=23,h=65,i=87,j=43)

 a  b  c  d e  f  g  h  i  j
10 45 67 32 5 46 23 65 87 43 

我试过这个

max.col(dd) 

但我只获得单一价值。我想找到3个最大列名/编号

2 个答案:

答案 0 :(得分:2)

dplyrtidyr的一种方式:

library(dplyr)
library(tidyr)

dd %>% 
  gather() %>% 
  top_n(3) %>% 
  arrange(desc(value))

# A tibble: 3 x 2
  key   value
  <chr> <dbl>
1 i      87.0
2 c      67.0
3 h      65.0

答案 1 :(得分:2)

就是这样。无需包裹。

dd[,apply(dd, 1, function(x) order(x, decreasing = T)[1:3])]
   i  c  h
1 87 67 65