---
# System prepended metadata

title: Untitled

---

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


