내 테이블에는 400 개의 클래스와 12 개의 열로 구성된 수천 개의 행이 있습니다.R에서 열 속성의 통계를 기반으로 행을 선택하는 방법은 무엇입니까?
이상적인 결과는 "z"열의 최대 값을 기반으로 모든 원본 열을 포함하는 400 개의 행 (각 클래스에 대해 1 행)이있는 테이블입니다. 여기
내 데이터의 예이며, 나는 여러 가지 조합을 시도 R.x y z cluster 1 712521.75 3637426.49 19.46 12 2 712520.69 3637426.47 19.66 12 * 3 712518.88 3637426.63 17.37 225 4 712518.4 3637426.48 19.42 225 * 5 712517.11 3637426.51 18.81 225 6 712515.7 3637426.58 17.8 17 7 712514.68 3637426.55 18.16 17 * 8 712513.58 3637426.55 18.23 50 * 9 712512.1 3637426.62 17.24 50 10 712513.93 3637426.88 18.08 50
사용 만이 예에서 추출 된 2, 4, 7, 8 행이 필요 다음을 포함 :
tapply(data$z, data$cluster, max) # returns only the max value and cluster columns which.max(data$z) # returns only the index of the max value in the entire table
나는 또한 plyr 패키지를 통해 읽고, 그러나 해결책을 찾지 못했습니다.
그냥 경고 : 당신이'통계 :: aggregate'가 아닌'래스터 :: aggregate'를 사용하십시오
여기 내 솔루션입니다. (병합을위한 것). 정상적인 환경에서는 이것이 문제가되지 않을 것입니다. 언젠가 당신을 속일 수도 있습니다 :-) –
도움을 주셔서 대단히 감사합니다. aggregate() 및 merge()가 완벽하게 작동했습니다. 필자의 경우에는 tapply()를 사용한 두 번째 예제가 작동하지 않았고 비싸지 만 큰 테이블을 생성합니다. Aggregate()가 중복 값을 유지하고 병합하지 않는다는 것을 언급하는 것이 좋다. – Inga
@Inga, 나는 여기서 당신의 의견을 완전히 이해하지 못한다. 그러나 나의 본능에 의하면, 당신은 'merge'에 대한 도움말 파일을 읽을 수있다. 더 나은 제어 방법. 특히'by' 인수 (각 데이터 집합에서 일치시킬 열로 사용할 열을 지정하는)는 여기에서 중복 값을 제어하는 데 사용해야합니다.스택 오버플로에 오신 것을 환영합니다! – A5C1D2H2I1M1N2O1R2T1