作者f496328mm (为什麽会流泪)
看板R_Language
标题Re: [问题] 多个变数的回圈如何处理?
时间Mon Dec 26 13:28:34 2016
: 可能是因为我表达得不够清楚导致讨论的方向不够明确我在这里说声抱歉,
: 以下是我头脑清醒後想出来的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://webptt.com/cn.aspx?n=bbs/R_Language/M.1482730117.A.528.html
1F:推 lovedmagic: 马上来实用看看,先谢过大大 12/26 14:35