我有一行有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个最大列名/编号
答案 0 :(得分:2)
dplyr
和tidyr
的一种方式:
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