eStat
웹사이트에 정리된 초중등 데이터셋을 statdata
데이터 팩키지에 포함시킨다. 기본적인 작업 흐름은 eStat
웹사이트에서 Textbook_Elementary
아래 포함된 csv 파일을 로컬 파일로 .csv
형태로 저장한 후에 R 데이터 팩키지 외부 데이터를 가져와서 데이터셋 문서화하는 방식으로 작업한다.
R 에서 데이터 팩키지를 생성하는 방식은 다음과 같다.
File
→ New Project
→ New Directory
→ R Package
GitHub 저장소 연결
git remote add origin <GitHub 저장소 이름>
→ git remote add origin git@github.com:tidyverse-korea/statdata.git
git add
→ git commit -m
→ git push --set-upstream origin statdata
statdata
확인
statdata
팩키지에 기여하는 방식은 다음과 같다.
statdata
팩키지 개발 저장소를 클론한다.
git clone git@github.com:tidyverse-korea/statdata.git
eStat
웹사이트에서 데이터를 선택하여 .csv
파일로 저장한다.
신규 데이터를 statdata
데이터 팩키지에 반영한다.
DATASET.R
스크립트를 작성해서 외부데이터를 팩키지 데이터로 변환시킨다.data.R
스크립트를 작성해서 데이터에 대한 문서화 작업을 수행한다.Build
→ Check Package
작업을 수행하여 다음 결과를 확인한 후에 Pull 요청을 보낸다.
0.1.0 ────
── R CMD check results ───────────────────────────────────── statdata : 13.7s
Duration
0 errors ✓ | 0 warnings ✓ | 0 notes ✓
R CMD check succeeded
CRAN에 등록된 것이 아니라… GitHub에 저장된 데이터 팩키지라 tidyverse-korea/statdata
저장소를 devtools
나 remotes
팩키지로 설치하면 된다.
::install_github("tidyverse-korea/statdata") devtools
statdata
팩키지를 설치하고 팩키지에 포함된 데이터를 확인한다.
library(tidyverse)
fs::dir_ls(path = "data/rawdata/", glob = "*.csv")
csv_filenames <-
purrr::map(csv_filenames, readr::read_csv)
openstat_raw <-
openstat_raw %>%
openstat_tbl <- tibble::enframe(name = "name", value = "content") %>%
dplyr::mutate(name = fs::path_file(csv_filenames) %>% str_remove(pattern = "\\.csv$"))
%>%
openstat_tbl slice(1:10) %>%
gt::gt()
name | content |
---|---|
025원시_성별 | c("남", "여", "남", "여", "남", "남", "남", "여", "여", "남") |
초등과학3-2그림자길이(136쪽) | c(0, 30, 60, 90, 120, 150, 180), c(60, 40, 20, 0, 20, 40, 60) |
초등과학3-2우리나라해역오염실태자료(104쪽) | c(1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008), c(371, 365, 299, 337, 379, 470, 463, 483, 455, 385, 297, 343, 355, 285, 345, 265), c(15460.3, 456.1, 15775.9, 1720.1, 3441, 1050.2, 386.9, 583, 668.1, 409.9, 1457.7, 1461.7, 410.3, 364.7, 14021.8, 435.9) |
초등과학5-2각행성의반지름(141쪽) | c("태양", "수성", "금성", "지구", "화성", "목성", "토성", "천왕성", "해왕성"), c(109, 0.4, 0.9, 1, 0.5, 11.2, 9.4, 4, 3.9) |
초등과학5-2거리-시간그래프(115쪽) | c(0, 40, 62, 80, 96, 109, 116), c(0, 20, 40, 60, 80, 100, 120) |
초등과학5-2교통수단(107쪽) | c("자전거", "자동차", "배", "기차"), c(20, 80, 40, 100) |
초등과학5-2달리기기록(105쪽) | c(1, 2, 3, 4, 5, 6), c(8.2, 9, 8, 9.3, 9.7, 8.5) |
초등과학5-2물의온도와물기둥높이(19쪽) | c(60, 70, 80, 90), c(14, 22, 34, 44), c(15, 28, 34, 46), c(14, 25, 35, 45) |
초등과학5-2물의온도와붕산녹는양(95쪽) | c(20, 40, 60, 80), c(5, 9, 14.8, 23.6) |
초등과학5-2물의온도와액체기둥높이(21쪽) | c(60, 70, 80, 90), c(29, 36, 44, 55), c(22, 33, 46, 58), c(20, 33, 45, 63) |
statdata
초등과학 3-2 데이터셋다음으로 openstat_tbl
티블 데이터프레임에 포함된 데이터셋을 추출하여 실제 활용을 한다. statdata
웹사이트에서 데이터를 Reference
에서 찾아도 되고, 예를 들어 shadow_length
를 찾아 데이터를 이해한 후에 적절한 분석 및 후속 작업을 이어가도 된다.
library(statdata)
library(tidyverse)
data(shadow_length)
shadow_length
# A tibble: 7 x 2
각도 길이
<dbl> <dbl>
1 0 60
2 30 40
3 60 20
4 90 0
5 120 20
6 150 40
7 180 60
각도와 길이 관계를 시각적으로 파악해보자.
%>%
shadow_length ggplot(aes(x = 각도, y = 길이)) +
geom_line() +
geom_point(size = 2) +
theme_bw(base_family = "NanumGothic") +
labs(title = "그림자 길이",
caption = "초등과학 3-2 그림자 길이 136쪽")
이와 유사한 방식으로 후속 작업을 이어가면 일일이 데이터를 찾아 .csv
파일로 저장하고 가져와서 필요하면 오류수정 등 불필요한 낭비되는 시간을 대폭 줄일 수 있다.
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com