R에서 그룹별로 고유한 값을 계산하는 방법(예제 포함)
다음 방법을 사용하여 R의 그룹당 고유 값 수를 계산할 수 있습니다.
방법 1: 기본 R 사용
results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))
방법 2: dplyr 사용
library (dplyr) results <- df %>% group_by(group_var) %>% summarize(count = n_distinct (values_var))
방법 3: data.table 사용
library (data.table)
df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]
각 방법은 정확히 동일한 결과를 반환하지만 기본 R 방법은 대규모 데이터 프레임으로 작업할 때 속도가 상당히 느려지는 경향이 있습니다.
다음 예에서는 다음 데이터 프레임에서 이러한 각 방법을 실제로 사용하는 방법을 보여줍니다.
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
points=c(10, 10, 14, 14, 18, 19, 20, 20, 20))
#view data frame
df
team points
1 to 10
2 to 10
3 to 14
4 to 14
5 B 18
6 B 19
7 C 20
8 C 20
9 C 20
방법 1: Base R을 사용하여 그룹별 고유 값 계산
다음 코드는 기본 R을 사용하여 각 팀의 고유 점수 값 수를 계산하는 방법을 보여줍니다.
#count unique points values by team
results <- aggregate(data=df, points~team, function (x) length ( unique (x)))
#view results
results
team points
1 TO 2
2 B 2
3 C 1
결과에서 우리는 다음을 볼 수 있습니다:
- A팀의 고유 포인트 값은 2개 입니다.
- B팀의 고유 포인트 값은 2개 입니다.
- C팀에는 1개의 고유 포인트 값이 있습니다.
방법 2: dplyr을 사용하여 그룹별로 고유한 값 계산
다음 코드는 dplyr을 사용하여 각 팀의 고유 점수 값 수를 계산하는 방법을 보여줍니다.
library (dplyr)
#count unique points values by team
results <- df %>%
group_by(team) %>%
summarize(count = n_distinct (points))
#view results
results
# A tibble: 3 x 2
team count
1 TO 2
2 B 2
3 C 1
이 결과는 기본 R 방법의 결과와 일치합니다.
방법 3: data.table을 사용하여 그룹별로 고유한 값 계산
다음 코드는 data.table을 사용하여 각 팀의 고유 점수 값 수를 계산하는 방법을 보여줍니다.
library (data.table)
#convert data frame to data table
df <- data.table(df)
#count unique points values by team
results <- df[, .(count = length ( unique (points))), by = team]
#view results
results
team count
1 TO 2
2:B2
3: C 1
이 결과는 이전 두 가지 방법의 결과와 일치합니다.
추가 리소스
다음 튜토리얼에서는 dplyr을 사용하여 다른 일반적인 작업을 수행하는 방법을 설명합니다.
dplyr을 사용하여 값을 다시 코딩하는 방법
dplyr에서 NA를 0으로 바꾸는 방법
dplyr을 사용하여 그룹별로 변수를 정렬하는 방법
dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법