看板 R_Language 關於我們 聯絡資訊
: 可能是因為我表達得不夠清楚導致討論的方向不夠明確我在這裡說聲抱歉, : 以下是我頭腦清醒後想出來的data的處理方式 : X A1 A2 A3 : 1 member A 34 10 4 : 2 member B 18 90 64 : 3 member C 16 155 0 : 4 member D 9 202 1 : 5 member E 4 84 6 : 6 member F 0 50 4 : 7 member G 0 153 30 : 8 member H 0 0 30 : 9 member I 0 0 40 : 10 member J 0 0 14 : 11 member K 0 0 91 : 12 member L 0 0 0 : 13 member M 0 0 0 : 14 member N 0 0 0 : 15 member O 0 0 0 : 16 member P 0 0 0 : 17 member Q 0 0 0 : 18 member R 0 0 0 : 19 member S 0 0 0 : 20 member T 0 0 0 : 21 member U 0 0 0 : 22 member V 0 0 0 : 23 member W 0 0 0 : 24 member X 0 0 0 : 25 member Y 0 0 0 : 26 member Z 0 0 0 : 27 member AA 0 0 0 : 我主要是想求在我變數下最大的數對應到左邊的名稱 : 例如A1是member A 然後值是34接著A2是member D然後值是202 : 以下是我真正想要的解,個人寫的步驟有點詭異還會跑出warnings : 但總歸是跑了理想的長相出來所以跟大家分享一下 : A <- cbind() : B <- cbind() : for (i in 2:271){ : colnames <- as.vector(X[data[,i] == max(data[,i])]) : A[i-1] <- colnames : B[i-1] <- max(data[,i]) : } : AB <- cbind(A,B) : AB : A B : [1,] "member A" "34" : [2,] "member D" "202" : [3,] "member K" "91" 你給的data只有到這 所以我也做到這 : [4,] "member J" "56" : [5,] "member E" "298" : [6,] "member B" "318" : 以上謝謝之前各位大大們的回答 max.id=function(x2,name){ value = as.character( name[ max(x2) == x2 ] ) return(list(value,max(x2))) } #如果有data,可以省去以下這些部分,這只是在生你的 data #------------------------------------------ name = substring("ABCDEFGHIJKLMNOPQRSTUVWXYZ",1:26,1:26) x = paste("numeric",c(name,"AA"),sep=" ") a1= c(34,18,16,9,4,rep(0,22)) a2= c(10,90,155,202,84,50,153,rep(0,20)) a3=c(4,64,0,1,6,4,30,30,40,14,91,rep(0,16)) data = data.frame(x,a1,a2,a3) #------------------------------------------ temp = sapply( c(2:4),function(y) max.id(data[,y],data$x) ) t(temp) #結果跟你的一樣 #我只跑3個次 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.225.233 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1482730117.A.528.html
lovedmagic: 馬上來實用看看,先謝過大大 12/26 14:35