반응형
R을 사용하여 최대값이 포함된 행 색인 찾기
다음 행렬을 고려하여 열 2에서 최대값을 찾고자 한다고 가정합니다.
mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 7 8 9
[3,] 4 5 6
알고있어요max(mat[,2])
8을 반환합니다.행 인덱스를 반환하려면 어떻게 해야 합니까? 이 경우 두 번째 행?
봐?which.max
> which.max( matrix[,2] )
[1] 2
봐?order
마지막 인덱스(또는 먼저 내림차순)만 있으면 되므로 다음 작업을 수행할 수 있습니다.
order(matrix[,2],decreasing=T)[1]
다음은 어떻습니까? 여기서 y는 행렬의 이름이고 전체 행렬에서 최대값을 찾습니다.
row(y)[y==max(y)]
행을 추출하려는 경우:
y[row(y)[y==max(y)],] # this returns unsorted rows.
정렬된 행을 반환하려면 다음을 사용합니다.
y[sort(row(y)[y==max(y)]),]
이 접근 방식의 장점은 조건부 내부를 필요한 모든 것으로 변경할 수 있다는 것입니다.또한, 사용하기col(y)
행잉 쉼표의 위치 및 열을 추출할 수도 있습니다.
y[,col(y)[y==max(y)]]
특정 열에서 최대값에 대한 행만 찾으려면 열 2를 사용할 수 있습니다.
seq(along=y[,2])[y[,2]==max(y[,2])]
다시 한 번, 조건은 다양한 요구사항을 찾기 위해 유연합니다.
추가 아이디어는 Phil Spector의 훌륭한 "S와 S-Plus 소개" 5장을 참조하십시오.
dplyr을 사용하는 다른 방법:
mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 7 8 9
[3,] 4 5 6
mat %>% as_tibble() %>% filter( V2 == max(V2) )
# A tibble: 1 x 3
V1 V2 V3
<int> <int> <int>
1 7 8 9
기능이 있습니다.max.col()
각 행에 대해 최대값이 있는 열을 찾습니다.
max.col(mat)
[1] 3 3 3
대신 각 열의 최대 행을 찾으려면 행렬을 전치하기만 하면 됩니다.
max.col(t(mat))
[1] 2 2 2
언급URL : https://stackoverflow.com/questions/743622/finding-row-index-containing-maximum-value-using-r
반응형
'prosource' 카테고리의 다른 글
도달 가능성 분석에서 Promise가 고려되지 않는 이유는 무엇입니까? (0) | 2023.06.12 |
---|---|
Java EE Framework 중 Oracle ADF 11g의 위치는 무엇입니까? (0) | 2023.06.12 |
다른 실행 파일이 필요한 에 실행 파일을 연결할 때 ld가 -rpath-link가 필요한 이유는 무엇입니까? (0) | 2023.06.07 |
사용자 지정 php.ini 파일 설정이 있는 Docker Wordpress 컨테이너 (0) | 2023.06.07 |
Angular 6의 multi ./styles.css에 오류가 있습니다. (0) | 2023.06.07 |