R에서 그룹별로 처음 n 값을 선택하는 방법
다음 방법 중 하나를 사용하여 R에서 그룹별로 상위 N 값을 선택할 수 있습니다.
방법 1: 그룹당 처음 N개 값 선택(동률 무시)
library (dplyr) #select top 5 values by group df %>% arrange(desc(values_column)) %>% group_by(group_column) %>% slice(1:5)
방법 2: 그룹별로 처음 N개의 값 선택(동점 포함)
library (dplyr) #select top 5 values by group df %>% group_by(group_column) %>% top_n(5, values_column)
다음 예에서는 R의 다음 데이터 프레임과 함께 각 메서드를 사용하는 방법을 보여줍니다.
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
points=c(19, 22, 15, NA, 14, 25, 25, 25),
rebounds=c(10, 6, 3, 7, 11, 13, 9, 12))
#view data frame
df
team points rebounds
1 A 19 10
2 to 22 6
3 to 15 3
4 A NA 7
5 B 14 11
6 B 25 13
7 B 25 9
8 B 25 12
예시 1: 그룹당 처음 N개 값 선택(동점 무시)
다음 코드는 팀별로 그룹화되어 가장 높은 점수 값을 가진 처음 2개 행을 선택하는 방법을 보여줍니다.
library (dplyr) #select top 2 rows with highest points values, grouped by team df %>% arrange(desc(points)) %>% group_by(team) %>% slice(1:2) # A tibble: 4 x 3 # Groups: team [2] team points rebounds 1 to 22 6 2 A 19 10 3 B 25 13 4 B 25 9
결과에는 각 팀의 가장 높은 포인트 값이 있는 두 개의 행이 포함됩니다.
B팀의 경우 실제로 가장 높은 값( 25 )에 동점인 3개의 행이 있었지만 출력에는 2개의 행만 반환되었습니다.
이 방법은 단순히 링크를 무시합니다.
예시 2: 그룹당 처음 N개 값 선택(동점 포함)
다음 코드는 팀별로 그룹화되어 가장 높은 점수 값을 가진 처음 2개 행을 선택하는 방법을 보여줍니다.
library (dplyr) #select top 2 rows with highest points values, grouped by team df %>% group_by(team) %>% top_n(2, dots) # A tibble: 5 x 3 # Groups: team [2] team points rebounds 1 A 19 10 2 to 22 6 3 B 25 13 4 B 25 9 5 B 25 12
결과에는 각 팀의 가장 높은 포인트 값이 있는 두 개의 행이 포함됩니다.
B팀의 경우 가장 높은 점수( 25 )에 대해 3개의 선이 동점이므로 이 방법은 최종 결과에 이 3개의 선을 포함했습니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
R의 모든 열에 값이 나타나는 행을 선택하는 방법
R에서 특정 열을 선택하는 방법
R에서 인덱스로 열을 선택하는 방법