A Ai B Bi C Ci
1 4 2 6 3 5
2 5 3 5 2 6
3 6 1 4 1 4
所以首先我需要在列(A,B,C)中找到最大值和第二个最大值,然后将其命名为列名(tie.method = first)。
然后我必须在右列(A,B,C)中找到该列,即column(Ai,Bi,Ci)。并根据max(A,B,C)的值放入Ai,Bi,Ci。
应如下所示:
A Ai B Bi C Ci max maxi 2ndmax 2ndmaxi
1 4 2 6 3 5 C 5(Ci) B 6(Bi)
2 5 3 5 2 6 B 5(Bi) A 5(Ai)
3 6 1 4 1 4 A 6(Ai) B 4(Bi)
有可能这样做吗?
想知道我应该在最后一行输入什么
y <- data.frame(A=c(1,2,3),Ai=c(4,5,6),
B=c(2,3,1),Bi=c(6,4,5),
C=c(3,1,2),Ci=c(4,6,5))
af=cbind(y[,c(1,3,5)])
y$maxcol=colnames(af)[apply(y[,c(1,3,5)],1,which.max)]
y$max_val=
答案 0 :(得分:0)
i = grep('i',names(data),invert = T)
j = t(apply(data[i], 1,order,decreasing =T)[1:2,])
data.frame(data,
matrix(names(data[i])[j],ncol = 2,dim = list(NULL,c('max','2ndmax'))),
matrix(data[-i][cbind(c(row(j)),c(j))],ncol = 2,dim = list(NULL,c('maxi','2ndmaxi'))))
A Ai B Bi C Ci max X2ndmax maxi X2ndmaxi
1 1 4 2 6 3 5 C B 5 6
2 2 5 3 5 2 6 B A 5 5
3 3 6 1 4 1 4 A B 6 4
数据:
structure(list(A = 1:3, Ai = 4:6, B = c(2L, 3L, 1L), Bi = 6:4,
C = 3:1, Ci = c(5L, 6L, 4L)), class = "data.frame", row.names = c(NA,
-3L))