반응형
그룹간 데이터 비교
Slam Dunk 상북고와 다른학교 신장 비교
엑셀 피벗
slam_dunk_total_엑셀.xlsx
0.01MB
Rstudio
names (slam_dunk_total) |
[1] "uniform_no" "name" "height" "weight" "blood type" "age" [7] "position" "school" |
library(tidyverse) compare_team <- slam_dunk_total %>% group_by(school) %>% summarise( no_player = n(), # 플레이어(학생) 수 lower = min (height), # 최저 신장 average = mean (height), # 평균 신장 upper = max (height), # 최고 신장 difference = max(height) - min(height) #최고 신장과 신저 신장의 차이 ) compare_team |
# A tibble: 6 × 6 school no_player lower average upper difference <chr> <int> <dbl> <dbl> <dbl> <dbl> 1 능남 8 165 182. 202 37 2 산왕 7 171 189. 210 39 3 상북 12 162 177. 197 35 4 상양 6 178 188. 197 19 5 풍전 6 180 184. 190 10 6 해남 9 160 181. 191 31 |
- 학교별로 그룹화 : "school" 열을 기준으로 그룹화, group_by(school)를 사용하여 각 학교별로 계산을 수행됨
- summarise() 함수는 데이터의 각 학교에 대해 집계 계산을 수행함
- no_player = n()는 각 학교별로 플레이어의 수를 계산
- lower = min(height)는 각 학교별로 플레이어의 최소 키를 계산
- average = mean(height)는 각 학교별로 플레이어의 평균 키를 계산합니다.
- upper = max(height)는 각 학교별로 플레이어의 최대 키를 계산합니다.
- difference = max(height) - min(height)는 각 학교별로 플레이어의 최대 키와 최소 키의 차이를 계산
- 학교별 플레이어 수는 6명 (상양)에서 12명 (상북) 까지 다양
- 가장 낮은 최소 키는 160 (해남) 이고, 가장 높은 최대 키는 210 (산왕)
- 학교별로 177에서 189 사이에 있음
- 키 범위(최대 키와 최소 키의 차이)는 가장 큰 키 차이는 39 (산왕) 이고, 가장 작은 키 차이는 10 (풍전)
Box Plot
slam_dunk_total %>% ggplot (aes(x = school, y = height)) + geom_boxplot() |
slam_dunk_total %>% ggplot(aes(x = school, y = height)) + geom_boxplot() + stat_summary(fun = max, geom = "text", aes(label = round(..y.., 1)), vjust = -1, color = "blue") + stat_summary(fun = min, geom = "text", aes(label = round(..y.., 1)), vjust = 1, color = "green") + stat_summary(fun = mean, geom = "point", color = "red", size = 3, shape = 20) + stat_summary(fun = mean, geom = "text", aes(label = round(..y.., 1)), vjust = -1, color = "red", show.legend = FALSE) + coord_cartesian(ylim = c(150, 220)) |
- 첫 번재, 두 번째, 네 번째 stat_summary() 함수를 사용하여 최대값, 평균값, 최소값 을 텍스트로 표시
- geom = "text"로 지정
- aes(label = round(..y.., 1))로 지정하여 수치를 소수점 첫 번째 자리까지 반올림하여 표시
- ..y..는 stat_summary() 함수 내에서 사용되는 특수한 변수로, fun = mean으로 stat_summary() 함수를 사용하면, ..y..는 각 그룹의 평균을 반환 (fun = max는 최대값, fun = min은 최소값)
- vjust : 텍스트의 세로 위치를 조정합니다. 음수 값은 아래쪽으로, 양수 값은 위쪽으로 조정
- 평균은 vjust = -1로 설정하여 텍스트가 점 위쪽에 표시하고, show.legend = FALSE로 지정하여 범례에는 해당 텍스트가 나타나지 않도록 설정
- 세 번째 stat_summary() 함수를 사용하여 평균 위치 표시
- geom = "point"로 지정하여 점 형태로 표시
- color = "red"로 지정하여 빨간색으로 표시되도록 하고, size = 3로 지정하여 점의 크기를 설정
- shape = 20로 지정하여 점의 모양을 둥근 점으로 설정
- coord_cartesian(ylim = c(150, 220))를 추가하여 y축의 범위를 150부터 220까지로 설정하여,
y축을 150부터 220까지 표시
최고 신장 선수와 최저 신장 선수 찾기
slam_dunk_total[which.max(slam_dunk_total$height),] |
uniform_no name height weight blood type age position school 48 15 신현필 210 130 NA 17 C 산왕 |
slam_dunk_total[which.min(slam_dunk_total$height),] |
uniform_no name height weight blood type age position school 31 15 홍익현 160 42 NA 18 G 해남 |
- 키 범위(최대 키와 최소 키의 차이) 결과 처럼, 산왕고 Box Plot의 높이가 가장 높고, 풍전고 Box Plot 높이가 가장 낮음
- Box Plot #2을 보면, 평균 신장은 성북고가 가장 낮고, 산왕고(189)와 상양고(188)가 비슷하게 높게 나타남
- Box Plot #1 (또는 #2)을 보면, 해남고는 이상치가 있음 (매우 낮은 데이터)
- 최고 신장은 산왕고 신현필 (210)이고, 최저 신장은 해남고 홍익현(160)
CSV 파일 저장하기
fileEncoding = "cp949" write.csv (compare_team, "compare_team.csv", fileEncoding = "cp949") |
fileEncoding = "EUC-KR" write.csv (compare_team, "compare_team2.csv", fileEncoding = "EUC-KR") |
728x90
'데이터 분석 (with Rstudio)' 카테고리의 다른 글
Rstudio 구글 지도에 마커(Marker) 표시 (대한민국 독도) (1) | 2023.08.15 |
---|---|
R과 Python 비교 및 선택 (0) | 2023.08.13 |
Rstudio 데이터 가공 및 기초 분석 #2 (0) | 2023.08.02 |
Rstudio 데이터 가공 및 기초 분석 #1 (0) | 2023.08.01 |
Rstudio 사분위수(Quartile) Outliers(이상치) IQR (사분범위) (0) | 2023.07.31 |