[英]Find first, second, and third maximum of each row and their corresponding column names in a data frame in r
[英]find column names corresponding to least value of each row in R
我必須為數據框的每一行提取至少與10個值相對應的列名,並將其打印在新的數據框中。有人可以幫我嗎?
我的數據框看起來像這樣:(15 x 15矩陣)
> head(yt)
V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 0 966 1513 2964 1149 927 1611 1510 390 466 1820 1718 504 1179
2 966 0 2410 1520 1817 729 686 290 1823 168 2027 172 1610 1500
3 1513 2410 0 604 481 2742 1833 826 214 1618 1712 567 544 1313
4 2964 1520 604 0 595 1289 1446 466 1139 430 428 201 452 1574
5 1149 1817 481 595 0 494 550 2641 765 934 1813 1516 378 1363
6 927 729 2742 1289 494 0 1279 1197 2956 299 888 491 1408 1432
對於15行中的每一行,我想知道至少10列的列名
我知道which.min為每一行提供最少的列名,但是您能讓我知道其他計算最少10個值的方法嗎?
order
函數將給出向量的order
數。 因此,其結果的第一個值對應於向量中最小值的索引。 第二個到第二個最小的索引等。在函數中使用它並使用apply
函數,我們可以將其應用於所有行。 apply函數的結果是按列排列的,您可能不希望這樣做,因此轉置將接管結果。
first_10 <- function(x) order(x)[1:10]
t(apply(dat, 1, first_10))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.