2012-11-02 5 views
-2

행 값별로 집계 로컬 순위 목록 : I가 K 가장 파트너를 찾으려는 첫 번째 열의 각 값R : I는 다음과 같은 형식의 데이터가

"almond" "blueberry" 3 
"almond" "leek" 6 
"almond" "citron" 7 
"almond" "fish" 2 
... 
"leek" "swiss_cheese" 3 
"leek" "pumpkin" 5 
"leek" "onion" 4 
"leek" "chocolate" 10 
... 

세 번째 항 기둥. "최고"는 세 번째 줄의 숫자가 낮다는 것을 의미합니다. 따라서 아몬드의 경우 3 개의 가장 좋은 파트너는 물고기, 블루 베리, 부추입니다. 부추의 경우 가장 좋은 파트너는 swiss_cheese, 양파 및 호박입니다. 드디어, 첫 번째 열에서 각 요소에 대한 세 가지 최고의 파트너의 전체 테이블을 줄이고 자

"almond" "blueberry" 3 
"almond" "leek" 6 
"almond" "fish" 2 
... 
"leek" "swiss_cheese" 3 
"leek" "pumpkin" 5 
"leek" "onion" 4 
... 
+1

예제 데이터 세트와 원하는 대답을 제공하는 것이 좋습니다. 그러면 누군가가 예제 데이터 세트를 원하는 대답으로 변환하는 데 필요한 R 코드를 제공 할 수 있습니다. –

+0

사람들이 쉽게 당신을 도울 수있는 방법에 대한 도움말 : http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Dason

+0

안녕하세요, Dason, 나는 이것의 대부분을 읽었습니다. 아직도, 나는이 구체적인 예에 ​​답하기에 부족한 것이 무엇인지를 보지 못했다. 샘플 데이터 세트와 원하는 결과가 있습니다. 약한 곳을 찾는데 도와 줄 수 있어요? 분명히 나에게 제 질문은 명확합니다 ;-) – networker

답변

0

그래서 즉, 내가 그렇게 발견 한 방법입니다

require(plyr) 
t <- ddply(table, .(V1), transform, rank = rank(V3)) 
z <- t[rank <= k,] 

첫 번째에게 패키지가 아직로드되지 않은 경우 행이로드됩니다. 두 번째 열은 등급으로 마지막 열을 추가하고 첫 번째 열 ("V1")에 의해 생성 된 세 번째 열 ("V3")에 따라 각 행의 순위를 포함합니다. 즉, 첫 번째 열의 각 고유 값에 대해 모든 행의 로컬 순위가 있습니다. 두 번째 단계에서는 순위가 주어진 k보다 작은 행만 하위 집합으로 지정할 수 있습니다.

관련 문제