rd2 <- data.frame(x = sample(1:100, 20), y = sample(1:100, 20), z
sample(1:100, 20))
# function I found in stackoverflow for finding the second largest value
maxN <- function(x, N = 2){
len <- length(x)
if(N > len){
warning('N greater than length(x). Setting N = length(x)')
N <- length(x)
}
sort(x,partial = len - N+1)[len - N+1]
}
# indexing values
rd2[, "axis1n"] <- apply(rd2[1:3], 1, function (x) max(x))
rd2[, "axis2n"] <- apply(rd2[1:3], 1, function (x) maxN(x))
rd2
x y z axis1n axis2n
1 56 63 84 84 63
2 50 45 13 50 45
3 79 21 43 79 43
4 33 46 33 46 33
5 46 26 12 46 26
6 55 47 11 55 47
7 85 76 85 85 85
8 43 56 48 56 48
9 17 67 92 92 67
10 37 43 59 59 43
11 21 89 27 89 27
12 57 44 25 57 44
13 27 20 88 88 27
14 63 62 44 63 62
15 80 14 46 80 46
16 88 54 54 88 54
17 16 97 65 97 65
18 48 83 77 83 77
19 77 17 53 77 53
20 47 64 70 70 64
你好colnames,
我需要兩列添加到該數據幀,其中:
AXIS1: 每個行,與axis1n中的值匹配的列的列名稱(最大值)
axis2: 對於每行,列匹配的列名稱在axis2n中的值(第二大)
使用max.col獲取最大值的列名很容易,但是我需要一種可以爲許多不同索引值(例如第二大值或簡單列表)重現的方法的數字給予..
希望我有道理..請幫助!
謝謝!
因此對於第1行,axis1將爲「z」,axis2爲「y」 – user5813583
我需要通過使用任何給定的整數/整數列表來做到這一點... – user5813583