###### tags: `세종과학예술영재학교` `챗GPT 데이터 과학` `한국R사용자회` # 세종과학예술영재학교 ## 참석자 ## 강의 데이터 - [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/) - [`gapminder`](https://github.com/jennybc/gapminder) ## 프로그래밍 ### 대한민국의 기초자치단체 목록 - 위키백과 [대한민국의 기초자치단체](https://ko.wikipedia.org/wiki/대한민국의_기초자치단체_목록) - 위키백과 [역대 대한민국 대통령 선거 결과](https://ko.wikipedia.org/wiki/역대_대한민국_대통령_선거_결과) https://hackmd.io/HJBRLC3D6 # 프로그램 1. 쿼토(Quarto) Download(V1.4 이상) 2. R(Ver 3.2 이상) 3. RStudio IDE(latest) 4. D2Coding 폰트 다운로드 # 참가자 - 이광춘(한국R사용자회): [공익법인 R 홈페이지](https://r2bit.com) - 취미1: 바둑 - 취미2: 프로그래밍 - 자기소개: 저는 **프로그래밍**을 사랑하고 디지털 글쓰기를 통해 많은 기여를 하고 있습니다. - 김종헌(세종과학예술영재학교) - 취미 : shiny app 만들기 - 자기소개 : **데이터 기반 의사결정** 학교문화를 만들기 위해 노력하고 있습니다. - 김재숙(세종과학예술영재학교): [블로그](https://blog.naver.com/jsviolet78) - 취미: 인성교육 연구, 독서, 식물재배 - 자기소개: 수학교사이고요, 올해 **통계**를 가르치게 되어서 공부 중입니다. - 정의완(세종과학예술영재학교): - 취미: 트래킹, 여행 - 강원도 출생. 지구과학 교사. **화산 탐사** 좋아해요. 지구 **운석충돌구 탐사** 즐깁니다. - 김명희(세과영) - 취미: 운동 - 곽승철(세종과학예술영재학교) - 취미: 운동 - 자기소개: 지구과학교사, 지구과학정보처리에 관심 - 전준호(세종과학예술영재학교): [학교채점서버](https://code.sasa.hs.kr) - 취미1: 여행 - 취미2: 맛집 탐방 - 자기소개 : 저는 **정보과학**에 대한 새로운 기술을 배우는 것을 좋아하고, 바다를 보며 코딩하는 것을 행복하게 생각합니다. - 이현진(홍익대학교): [학교 홈페이지](http://hongik.ac.kr) - 취미: 요리 - 자기소개: 홍익대 세종캠 디자인컨버전스학부에서 **데이터 기반 디자인**수업을 합니다. - 성현중(세과영) - 취미 : 운동, 유튭 - 자기소개 : 세과영 물리 교사입니다. # 책 자료 - https://r2bit.com/gpt-writing/ # QuartoPub - https://quartopub.com/ # R 사용자회 - https://github.com/bit2r # Rstudio copilot https://dailies.rstudio.com/ # 퀴즈 광역시도별로 평균 인구수를 구하시요. ``` library(tidyverse) library(httr) library(rvest) sigungu_url <- "https://ko.wikipedia.org/wiki/대한민국의_기초자치단체_목록" sgg_html <- read_html(sigungu_url) sgg_raw <- sgg_html |> html_nodes("table") |> html_table() %>% .[[1]] sgg_raw |> janitor::clean_names(ascii = FALSE) ``` ``` sgg_raw |> janitor::clean_names(ascii = FALSE) %>% mutate(인구_명 = parse_number(인구_명)) |> group_by(광역자치단체) |> summarise(평균인구수 = mean(인구_명, na.rm = TRUE)) |> arrange(desc(평균인구수)) |> head(10) |> knitr::kable() ``` ``` # 예쁜 그래프 ```{r} #| eval: false ssg_gg <- ssg_tbl %>% # 데이터 전처리 group_by(광역자치단체) |> summarise(평균인구수 = mean(인구_명, na.rm = TRUE)) |> arrange(desc(평균인구수)) %>% # 요기부터 그래프 ggplot(aes(x = fct_reorder(광역자치단체, 평균인구수), y = 평균인구수)) + geom_col(width = 0.1) + geom_point(size = 5, color = "red") + coord_flip() + scale_y_continuous(labels = scales::comma) + labs( title = "광역자치단체별 평균 인구수", subtitle = "2024년 1월 기준", x = "", y = "평균 인구수", caption = "출처: 위키백과" ) + theme_minimal() ssg_gg fs::dir_create("images") ggsave("images/ssg_gg.png", width = 10, height = 6, dpi = 300) ``` ![](images/ssg_gg.png) ``` # 전체 코드 ``` --- title: "R 프로그래밍" editor_options: chunk_output_type: console --- # 프로그래밍 ## 시군구 ```{r} #| eval: true library(tidyverse) library(httr) library(rvest) sigungu_url <- "https://ko.wikipedia.org/wiki/대한민국의_기초자치단체_목록" sgg_html <- read_html(sigungu_url) sgg_raw <- sgg_html |> html_nodes("table") |> html_table() %>% .[[1]] sgg_raw |> janitor::clean_names(ascii = FALSE) # 데이터 정제과정 # 광역자치단체별로 평균 인구수를 구해줘 ssg_tbl <- sgg_raw |> janitor::clean_names(ascii = FALSE) %>% mutate(인구_명 = parse_number(인구_명)) # ssg_tbl %>% # group_by(광역자치단체) |> # summarise(평균인구수 = mean(인구_명, na.rm = TRUE)) |> # arrange(desc(평균인구수)) |> # head(10) |> # knitr::kable() ``` 상기 코드는 다음과 같은 결과를 보여준다. 광역자치단체 평균 인구수 상위 10개를 보여준다. # 예쁜 그래프 ```{r} #| eval: false ssg_gg <- ssg_tbl %>% # 데이터 전처리 group_by(광역자치단체) |> summarise(평균인구수 = mean(인구_명, na.rm = TRUE)) |> arrange(desc(평균인구수)) %>% # 요기부터 그래프 ggplot(aes(x = fct_reorder(광역자치단체, 평균인구수), y = 평균인구수)) + geom_col(width = 0.1) + geom_point(size = 5, color = "red") + coord_flip() + scale_y_continuous(labels = scales::comma) + labs( title = "광역자치단체별 평균 인구수", subtitle = "2024년 1월 기준", x = "", y = "평균 인구수", caption = "출처: 위키백과" ) + theme_minimal() ssg_gg fs::dir_create("images") ggsave("images/ssg_gg.png", width = 10, height = 6, dpi = 300) ``` ![](images/ssg_gg.png) # 예쁜 표 ```{r} library(tidyverse) library(gt) library(gtExtras) ssg_gt <- ssg_tbl %>% group_by(광역자치단체) |> summarise(평균인구수 = mean(인구_명, na.rm = TRUE)) |> arrange(desc(평균인구수)) %>% # 표 그릴꺼야 gt() %>% gt::tab_header( title = "광역자치단체별 평균 인구수", subtitle = "2024년 1월 기준" ) %>% gt::cols_align(column = 광역자치단체, align = "center") %>% gt::fmt_integer(columns = 평균인구수) %>% gtExtras::gt_theme_excel() ssg_gt # ssg_gt %>% # gtsave("images/ssg_gt.png") ``` ![광역자치단체 평균 인구수](images/ssg_gt.png) # 고급 쿼토 ::: panel-tabset ## 그래프 이미지 ![](images/ssg_gg.png) ## 표 이미지 ![](images/ssg_gt.png){fig-align="center" width="290"} ::: ``` # R 메시지 https://github.com/bit2r/map_challenge/blob/main/after_by_election.qmd knitr: opts_chunk: eval: true message: false warning: false collapse: true comment: "#>" R.options: knitr.graphics.auto_pdf: true # WEB-R https://docs.r-wasm.org/webr/latest/ https://github.com/coatless/quarto-webr?tab=readme-ov-file # 워크샵 https://statkclee.github.io/workshop/sejong.html