У нас есть это df
# We create the df
x <- c(1,33,5,2,56,1)
y <- c(4,358,57,3,32,2)
df <- as.data.frame(cbind(x,y))
rownames(df) <- c("a", "b", "c", "d", "e", "f")
Значение df:
x y
a 1 4
b 33 358
c 5 57
d 2 3
e 56 32
f 1 2
Я хотел бы получить имена строк максимального значения и его второго по величине значения из столбца x
и те же имена строк из столбца y
.
Таким образом, результатом будет e
и b
из столбца x
и b
и c
из y
column.
Я пробовал эти коды, но безуспешно.
rownames(df)[max(df$x)] # for the maximum value
nx <- length(df$x) # length of the x column
rownames(df)[sort(df$x, partial=nx-1)[nx-1]] # for the second max value
Однако результаты предыдущих трех строк кода:
NA # what's wrong?
6 # yeah, it is 6
"e" # nope, the second max is "b"
Где находитсяпроблема и как я могу решить эти проблемы?