2017-03-14 3 views
0

질문R에 범주 형 변수의 정렬 된 빈도 테이블을 가져 오는 간단한 한 줄 명령이 있습니까?

은 (예를 들어 참조, a generic data frame sorting question의 중복 표시되어 this question) R의 범주 형 변수의 정렬 된 주파수 테이블을 생성하는 방법을 이미 몇 번을 요청하고있다. 대답은 세 가지 연속적인 작업을 제안합니다 : 1. 주파수 테이블 생성, 2. 데이터 프레임으로 변환, 3. 정렬 (아래 예 참조).

이렇게 간단한 조작으로 인해 비교적 복잡합니다. 게다가, 의 데이터 프레임은 내가 찾고있는 정렬 된 주파수 테이블의 첫 번째 5 줄을 (해당 열의 경우) 제공합니다 (이 열의 다른 값의 수가 5보다 큰 경우).

예 "이름"에 대한 수천 개의 행과 수천 개의 다른 값을 가진 형태

example_df <- data.frame("Avg" = c(2558,2532,2503,2498,2491,2491,2477,2467,2460,2458,2445,2422), "Name" = c("Jun","Wang","Xi","Wang","Wang","Ma","Li","Ma","Xi","Lin","Yang","Zhao")) 

하지만 더 이상의 데이터 프레임을 고려하십시오.

자주 사용하는 이름이 가장 많이 나오는 빈도 테이블을 추출하는 가장 쉬운 방법은 무엇입니까? 대부분 이름이 하나만있는 큰 테이블은 매우 유익하지 않기 때문에 유용합니다.

당신은

library(plyr) 
example_ft<-as.data.frame(table(example_df$Name)) 
example_ft<-arrange(example_ft,desc(Freq),Var1) 

example_ft<-as.data.frame(table(example_df$Name)) 
example_ft<-example_ft[order(-example_ft$Freq),] 

또는

위의 링크 된 이전의 질문에 제안 된 솔루션입니다 할 수 있습니다. (행 번호가 다를 수 있지만) 의도 한대로 다음 example_ft에서 두 결과

Var1 Freq 
5 Wang 3 
4 Ma 2 
6 Xi 2 
1 Jun 1 
2 Li 1 
3 Lin 1 
7 Yang 1 
8 Zhao 1 

하지만 두 옵션은 오히려 복잡하게 보인다. 아마도 더 단순하고 직접적인 방법 일 것입니다.

summary(example_df) 

출력 :이 약

 Avg   Name 
Min. :2422 Wang :3 
1st Qu.:2460 Ma  :2 
Median :2484 Xi  :2 
Mean :2484 Jun :1 
3rd Qu.:2499 Li  :1 
Max. :2558 Lin :1 
       (Other):2 
+1

단지 ';'를 사용하면 모든 것을 한 줄에 넣을 수 있습니다. 즉 'x <-5; x'이다. – CCurtis

답변

1

어떻게 그리고 실제로 원하는 출력 (하지만 처음 5 개 라인 만 다른 관련이없는 출력 중), summary()을 줄 것이다 아주 간단한 명령이있다 ? :

sort(table(example_df$Name),decreasing = TRUE) 
관련 문제