###### 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)
```

```
# 전체 코드
```
---
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)
```

# 예쁜 표
```{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")
```

# 고급 쿼토
::: panel-tabset
## 그래프 이미지

## 표 이미지
{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