我有一个这样的数据框:
[,1] [,2] [,3] [,4] [,5] [,6]
a 1 5 7 9 4
b 2 8 2 3 5
c 3 9 2 4 8
d 4 2 6 1 3
我想根据其他列的最大值获取列[,1]的值。结果应该是这样的:
[1] "d" "c" "a" "a" "c"
先感谢您。
如果您有一个数据框,则可以which.max
用来获取每一列的索引最大值,并使用该索引对第一列的值进行子集化。
df$V1[sapply(df[-1], which.max)]
#[1] "d" "c" "a" "a" "c"
如果您有矩阵(看起来更可能),那么由于第一列,所有值都将变成字符,在这种情况下,您可以执行以下操作:
mat[apply(mat[, -1], 2, function(x) which.max(as.numeric(x))), 1]
#[1] "d" "c" "a" "a" "c"
数据
df <- structure(list(V1 = c("a", "b", "c", "d"), V2 = 1:4, V3 = c(5L,
8L, 9L, 2L), V4 = c(7L, 2L, 2L, 6L), V5 = c(9L, 3L, 4L, 1L),
V6 = c(4L, 5L, 8L, 3L)), row.names = c(NA, -4L), class = "data.frame")
mat <- structure(c("a", "b", "c", "d", "1", "2", "3", "4", "5", "8",
"9", "2", "7", "2", "2", "6", "9", "3", "4", "1", "4", "5", "8",
"3"), .Dim = c(4L, 6L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句