본문 바로가기
반응형

R 프로그래밍36

오픈 API를 활용한 공공데이터 불러오기(데이터 포맷: json) 오픈 API를 활용한 공공데이터 불러오기(데이터 포맷: json)에 이어서 json 형태의 데이터 포맷을 불러오는 R 프로그래밍을 알아보도록 할게요. 공공데이터를 활용하기 위한 준비 단계는 여기를 참고하시면 됩니다. 비교를 위해서 지난번 포스팅에서와 같은 데이터를 불러와 보도록 할게요. 데이터 형식을 확인하기 위한 샘플데이터 확인하기 결과 형식을 json으로 변경한 후에 미리 보기 버튼을 클릭하시면, 아래와 같은 샘플데이터를 볼 수 있어요. 이를 참고해서 원하는 데이터를 추출해 보도록 할게요. 오픈 API URL구조에 대해서는 지난번 포스팅에서 설명해서 넘어가도록 할게요. 데이터 추출을 위한 R code(with jsonlite 패키지) install.packages('jsonlite') # json 형.. 2022. 1. 27.
[R 그래픽스] 제목(Title) 달기 R Graphics Cookbook을 기반으로 하여 작성하였습니다. 그래프에 제목(Title)을 달고 싶으면, 어떻게 해야 할까요? 우선, 제목이 없는 그래프의 예시입니다. library(ggplot2) bp 2022. 1. 23.
[R 그래픽스] Scatterplots 그리기 R Graphics Cookbook을 기반으로 하여 작성하였습니다. Scatterplot을 그리고 싶어요. 어떻게 하면 될까요? 일단, 가상의 데이터를 생성하고 만들어 볼게요. set.seed(955) # Seed값 세팅 # 가상의 데이터 생성 dat 2022. 1. 22.
[R 그래픽스] 분포 그리기 R Graphics Cookbook을 기반으로 하여 작성하였습니다. 데이터 분포를 그래프로 표현하려고 합니다. 어떻게 하면 될까요? 아래 샘플 데이터를 활용해서 그래프로 표현해 보도록 할게요. set.seed(1234) # seed값 부여 dat 2022. 1. 16.
데이터 프레임의 열 이름 바꾸기 Cookbook for R을 기반으로 하여 작성하였습니다. 데이터 프레임의 열 이름을 바꾸려고 합니다. 어떻게 처리하면 될까요? 3개의 열이 있는 샘플 데이터 프레임으로 시작해 볼게요. d 2022. 1. 9.
[R 그래픽스] 평균(means)과 오차(error) 막대그래프 그리기 본 포스팅은 R Graphics Cookbook을 기반으로 하여 작성하였습니다. ggplot2로 그래프를 만들려면 데이터가 데이터 프레임으로 존재해야 하며, 데이터 형식이 "long format"이어야 합니다. 데이터를 재구성해야 하는 경우 자세한 내용은 여기를 참조하세요. 샘플 데이터 아래 예는 ToothGrowth 데이터 세트예요. 복용량(dose)은 숫자 형식의 열이기 때문에 그것을 factor로 변환하는 것이 유용할 수 있어요. tg 2022. 1. 8.
오픈 API를 활용한 공공데이터 불러오기(데이터 포맷: xml) 공공데이터 홈페이지 가입 및 데이터 추출 준비 정부가 개방한 공공데이터를 오픈 API를 활용해서 추출하는 방법에 대해서 설명드릴게요. 우선, 공공데이터 홈페이지에 접속해 볼게요. 공공데이터 url 주소는 https://www.data.go.kr/index.do입니다. 여기를 클릭해서 들어가시면 아래와 같은 화면이 보입니다. 좌측 상단에 회원가입 탭을 클릭하셔서, 회원 가입을 하시면 로그인됩니다. 로그인하신 후 마이페이지에서 인증키를 받으셔야 공공 API를 활용하실 수 있어요. 아래 화면은 제가 발급한 인증키 발급현황입니다. 다시 홈페이지 첫 화면에서 "금융"이라고 검색하고, 오픈 API탭을 클릭하시면 아래 화면이 보이는 데요. 제일 위에 있는 데이터 금융위원회_금융회사기본정보를 오픈 API를 활용해서 추.. 2022. 1. 7.
factor level 이름 변경하기 Cookbook for R을 기반으로 하여 작성하였습니다. factor level의 이름을 변경하려면 어떻게 할까요? # 간단한 factor 생성 x 2022. 1. 6.
정렬(sorting)하기 Cookbook for R을 기반으로 하여 작성하였습니다. 벡터, 행렬 또는 데이터 프레임을 정렬하려고 합니다. 어떻게 하면 될까요? 하나씩 살펴보도록 할게요. 벡터(Vector) # 랜덤 하게 정렬된 예시 벡터 생성 v 2022. 1. 5.
데이터 요약(Data summary) 본 포스팅은 R cookbook을 기반으로 하여 작성하였습니다. 데이터(평균, 표준 편차 등)를 그룹별로 분류하여 요약하고 싶다면, 어떻게 해야 할까요? 기본적으로 일부 지정된 변수를 기반으로 데이터를 그룹화하고, 각 그룹에 요약 기능(예: 평균, 표준 편차 등)을 적용하는 세 가지 방법이 있어요. 1. ddply() 함수: plyr 패키지가 필요하지만 사용하기 가장 쉬워요. 2. summaryBy() 함수: doBy 패키지가 필요하지만 사용하기가 쉬운 편이에요. 3. aggregate() 함수: 사용하기가 어려운 편이지만, R의 base에 포함되어 있어요. 어떤 데이터가 존재하고, 각 그룹에 대한 N(수), 변화 평균, 표준 편차 및 표준 오차를 찾고자 한다고 가정해 보죠. 여기서 그룹은 성별과 조건의.. 2021. 12. 31.
[R 그래픽스] 막대(Bar) 및 선(Line) 그래프 그리기 본 포스팅은 R Graphics Cookbook을 기반으로 작성하였습니다. 기본적인 막대(Bar) 또는 선(Lline) 그래프를 만들어 볼게요. ggplot2로 그래프를 만들려면 데이터가 데이터 프레임(data frame)이어야 하고, "긴(long)"(와이드(wide)와 반대) 형식이어야 해요. 그렇기 때문에 데이터를 재구성해야 하는 경우도 있어요. 이와 관련된 자세한 내용은 여기를 참고하세요. 이산형 변수를 가지는 x축이 있는 기본 그래프 막대그래프에는 막대의 높이가 일반적으로 나타내는 두 가지가 있어요. 1. 각 그룹의 케이스 수 - 일반적으로 이산형 변수 각각의 x 값은 하나의 그룹을 나타냅니다. 이것은 각 그룹의 케이스 수를 계산하는 stat_bin으로 수행돼요. stat_bin은 x가 이산형 .. 2021. 12. 30.
와이드 포맷과 롱 포맷 간 데이터 변환 Cookbook for R을 기반으로 하여 작성하였습니다. 이번 포스팅에서는 와이드 형식(wide format)에서 긴 형식(long format)으로 데이터를 변환하는 방법에 대해서 알아볼게요. R에서 사용하는 많은 함수는 데이터가 와이드 형식이 아닌 긴 형식일 것으로 예상을 하고 있어요. 그러나 가끔 넓은 형식의 데이터를 사용하곤 해요. 그래서 두 형식 간의 데이터를 변환시키는 방법에 대해서 알고 있어야 각 상황에 맞는 데이터 분석을 할 수 있어요. 그럼 데이터 형식을 변환시키는 방법에 대해 알아볼게요. 두 형식 간에 변환을 할 수 있는 방법은 크게 아래 2가지예요. 1. tidyr 패키지의 gather()와 spread() 함수 사용 2. reshape2 패키지의 melt() 및 dcast() 함수.. 2021. 12. 28.
개요 R의 강점 중 하나는 그래픽인데요. 제 블로그 중 R과 관련된 카테고리에는 R과 관련된 그래픽 내용이 별도로 존재하지 않았어요. 다른 카테고리에 혼재되어 있는 형태였습니다. 그래서, R 그래픽스에 대한 내용을 별도 카테고리로 구성해서 좀 체계적으로 정리해 보고 싶었어요. 그래서 "R 그래픽스"라는 카테고리를 별도로 생성하게 되었어요. 제가 참고한 자료는 "R Graphics Cookbook"을 기반으로 제 블로그 주제인 신용평가와 관련된 내용들로 구성해 봤어요. R 그래프에 대한 관심이 많으신 분들에게 많은 도움이 되었으면 합니다. R에서 그래프를 만드는 방법에는 여러 가지가 있고, 활용하는 패키지도 다양하며, 각각의 장점과 단점이 있죠. 여기서는 자주 사용되고, 활용되는 ggplot2 패키지를 기반으로.. 2021. 12. 27.
[R 그래픽스]정당별 국회의원 의석 수 그래프로 표현하기 오늘은 대한민국 정당별 국회의원 의석 수를 그래프로 표현하는 방법에 대해서 알아보도록 할게요. 최종 표현된 그래프의 모습은 아래와 같아요. 자! 그러면 지금부터 그래프를 그려 보도록 하겠습니다. 위와 같은 그래프를 그리려면 우선 "ggpol"이라는 R 패키지가 필요하기 때문에, 우선, 패키지를 설치하고, 로딩할게요. install.packages("ggpol") # ggpol 패키지 설치 library(ggpol) # ggplo 패키지 로딩 다음에는 정당별 의석 수를 나타내는 데이터 프레임을 생성할게요. (참고로, 「국회법」제33조 제2항 및 제3항에 따른 보고 기준, 2022년 03월 11일 현재 기준의 정당별 의석 수입니다.) df 2021. 12. 19.
[R 그래픽스] 워드 클라우드(Word Cloud) 생성하기 워드 클라우드(Word Cloud)는 단어의 빈도수를 구름 형태로 표현하는 그래픽 기법입니다. 통상적으로 단어의 크기는 빈도수에 비례하여 표현합니다. 워드 클라우드를 설명하는 여러 블로그를 보면, 한글 자연어 분석 패키지인 KoNLP(Korean Natural Language Processing)에서 시작합니다. 하지만, 정작 워드 클라우드를 생성하기 위해서는 아래 2가지만 준비되면 그리기가 가능한 그래픽 기법입니다. 1. wordcloud 패키지 설치 2. wordcloud 표현을 위한 2개의 변수(단어, 빈도수)로 구성된 Data.frame KoNLP패키지는 결국 2번의 데이터 세트를 생성하기 위해 중간 과정에서 필요한 패키지입니다. KoNLP 패키지는 다음 포스팅에서 자세히 다루도록 하겠습니다. 그.. 2021. 10. 31.
[R데이터다루기]문자열 처리하기(기초) 본 포스팅은 R for Data Science를 기반으로 작성되었습니다. 1. 소개 이번 포스팅에서는 R의 문자열 처리를 소개합니다. 문자열이 작동하는 방식과 손으로 문자열을 만드는 방법에 대한 기본 사항을 배우지만 이번 포스팅의 초점은 정규표현식 또는 줄여서 정규식입니다. 문자열은 일반적으로 비정형 또는 반정형 데이터를 포함하고 있는데, 정규 표현식은 문자열의 패턴을 설명하기 위한 간결한 언어이기 때문에 매우 유용합니다. 정규 표현식을 처음 볼 때 매우 당황할 수 있지만 시간이 지나면 곧 이해하기 시작할 것입니다. 1.1. 전제조건 이번 포스팅에서는 핵심 tidyverse의 일부인 문자열 조작을 위한 stringr 패키지에 초점을 맞출 것입니다. library(tidyverse) 2. 문자열 기초 작은.. 2021. 10. 5.
R 워크플로우(Project) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 데이터 분석을 진행하다 보면, 언젠가는 R을 종료하고 다른 일을 하고, 그다음 날 이어서 분석을 해야 하는 경우가 자주 발생합니다. 또한 R을 사용해서 분리된 상태를 유지하면서 여러 분석을 동시에 수행해야 하는 경우도 있습니다. 외부 데이터(R에서 생성하지 않은 모든 데이터)를 R로 가져와서 분석 후 R의 수치 결과와 수치를 다시 외부 데이터 형태로 보내야 합니다. 이러한 상황을 처리하려면 두 가지 결정을 내려야 합니다. 1. 현재 분석이 "실제 상황"입니까? 즉, 무슨 일이 있었는지에 대한 지속적인 기록으로 무엇을 저장할 것입니까? 2. 분석이 "진행되고 있는" 곳은 어디입니까? 1. 실제 분석 상황이 무엇인가? R 사용자로.. 2021. 10. 3.
R 워크플로우(기초) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 1. 코딩 기초 가능한 한 빨리 플로팅 할 수 있도록 몇 가지 기본 사항을 검토해 보겠습니다. R을 계산기로 사용할 수 있습니다. 1 / 200 * 30 #> [1] 0.15 (59 + 73 + 2) / 3 #> [1] 44.66667 sin(pi / 2) #> [1] 1 2021. 10. 2.
탐색적 자료 분석(최종) 본 포스팅은 R for Data Science를 기반으로 하여 작성했습니다. 1. 패턴과 모델 데이터의 패턴은 관계에 대한 단서를 제공합니다. 두 변수 사이에 체계적인 관계가 있으면 데이터에 패턴으로 나타납니다. 패턴을 발견하면 스스로에게 질문을 던져야 합니다. 이 패턴이 우연의 일치인가? 패턴이 내포하는 관계를 어떻게 설명할 수 있을까? 패턴이 암시하는 관계는 얼마나 강력합니까? 관계에 영향을 줄 수 있는 다른 변수는 무엇일까? 데이터의 개별 하위 그룹을 보면 관계가 변경될까? Ex) Old Faithful 분화 길이 대 분화 간 대기 시간의 산점도는 패턴을 보여줍니다. 대기 시간이 길수록 분화도 길어집니다. 산점도에는 위에서 확인한 두 개의 클러스터도 표시됩니다. ggplot(data = faithf.. 2021. 10. 1.
탐색적 자료 분석(공변량2) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 1. 두 개의 범주형 변수 범주형 변수 간의 공분산을 시각화하려면 각 조합에 대한 관측값의 수를 계산해야 합니다. 그렇게 하는 한 가지 방법은 geom_count()를 활용하는 것입니다. ggplot(data = diamonds) + ____geom_count(mapping = aes(x = cut, y = color)) 그림에 있는 각 원의 크기는 각 값 조합에서 발생한 관측치의 수를 표시합니다. 공변량은 특정 x 값과 특정 y 값 사이의 강한 상관관계로 나타납니다. 또 다른 접근 방식은 dplyr로 개수를 계산하는 것입니다. diamonds %>% ____count(color, cut) 그런 다음 geom_tile() 및 .. 2021. 9. 30.
탐색적 자료 분석(공변량1) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 변동(variation)이 변수 내 행동을 설명하는 통계량이라면, 공변량(covariation)은 변수 간의 행동을 설명합니다. 공변은 두 개 이상의 변수 값이 관련된 방식으로 함께 변하는 경향입니다. 공변량을 찾는 가장 좋은 방법은 둘 이상의 변수 간의 관계를 시각화하는 것입니다. 이를 수행하는 방법은 관련된 변수 유형에 따라 달라집니다. 1. 하나의 범주형 및 연속형 변수 범주형 변수로 분류된 연속 변수의 분포를 탐색하려는 것이 가장 일반적입니다. geom_freqpoly()의 기본 모양은 높이가 개수에 의해 지정되기 때문에 상기 종류의 비교에는 별로 유용하지 않습니다. 즉, 그룹 중 하나가 다른 그룹보다 훨씬 작으면 모양.. 2021. 9. 29.
탐색적 자료 분석(결측치 처리) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 데이터 세트에서 비정상적인 값을 발견하고, 단순히 나머지 분석으로 이동하려는 경우에 진행할 수 있는 선택 사항은 아래 두 가지가 있습니다. 1. 비정상적인 값이 존재하는 전체 데이터 행 삭제 diamonds2 % ____filter(between(y, 3, 20)) 하나의 측정값이 유효하지 않다고 해서 모든 측정값이 잘못된 것은 아니기 때문에 별로 좋은 선택사항은 아니라고 생각합니다. 또한 품질이 낮은 데이터가 있는 경우 이 접근 방식을 모든 변수에 적용했을 때, 최종적으로 남아 있는 분석 데이터가 별로 없게 될 수도 있습니다. 2. 비정상적인 값을 결측 값으로 교체 이를 수행하는 가장 쉬운 방법은 mutate()를 사용하여 .. 2021. 9. 28.
탐색적 자료 분석(일반적 값 VS 비정상적인 값) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 1. 일반적인 값 막대 차트와 히스토그램 모두에서 긴 막대는 변수의 평범한 값을 표시하고 짧은 막대는 덜 일반적인(비정상적인) 값을 표시합니다. 막대가 없는 장소는 데이터에 표시되지 않은 값을 나타냅니다. 이 정보를 유용한 질문으로 바꾸려면 예상하지 못한 부분을 찾아내야 합니다. 어떤 값이 가장 일반적이고, 그 이유는 무엇일까? 어떤 값이 보기 드문 희귀한 값일까? 그 이유는 무엇일까? 내 생각과 일치하는가? 특이한 패턴이 보이나요? 특이 패턴을 설명할 수 있나? 예를 들어 아래 히스토그램은 몇 가지 흥미로운 질문을 제안합니다. 왜 전체 캐럿과 캐럿의 흔한 분수에 더 많은 다이아몬드가 있을까? 각 봉우리의 약간 왼쪽보다 각 봉.. 2021. 9. 27.
탐색적 자료 분석(변수 분포 탐색) 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. 변동(Variation)은 측정에서 측정으로 변하는 변수 값의 경향입니다. 실생활에서 쉽게 변동을 볼 수 있습니다. 연속형 변수를 두 번 측정하면 두 가지 다른 결과가 나타납니다. 이것은 빛의 속도와 같이 일정한 양을 측정하더라도 마찬가지입니다. 각 측정에는 측정할 때마다 달라지는 약간의 오류가 포함됩니다. 연속형 변수뿐만 아니라 다른 주제(예: 다른 사람의 눈 색깔) 또는 다른 시간(예: 다른 순간의 전자 에너지 수준)에 걸쳐 측정하는 경우 범주형 변수도 달라질 수 있습니다. 모든 변수에는 흥미로운 정보를 나타낼 수 있는 고유한 변형 패턴이 있습니다. 이 패턴을 이해하는 가장 좋은 방법은 변수 값의 분포를 시각화하는 것입니다.. 2021. 9. 26.
탐색적 자료 분석 Introduction 본 포스팅은 R for Data Science를 기반으로 하여 작성하였습니다. R을 활용한 탐색적 자료 분석(EDA, Exploratory Data Analysis)에 대해서 알아보겠습니다. EDA는 아래의 3가지 사항에 대한 반복적인 순환입니다. 1. 데이터에 대한 질문을 만들어 냅니다. 2. 데이터를 시각화, 변환 및 모델링하여 1에 대한 답변을 찾습니다. 3. 질문을 수정하거나 새로운 질문을 만들기 위해 여러분이 배운 내용을 사용합니다. EDA는 엄격한 규칙이 있는 공식 프로세스가 아닙니다. 무엇보다 EDA는 마음의 상태입니다. EDA의 초기 단계에서 생각나는 모든 아이디어를 자유롭게 조사해야 합니다. 이러한 아이디어 중 일부는 실현될 것이고 일부는 막다른 골목이 될 것입니다. 탐색이 계속되면서, .. 2021. 9. 25.
[R그래픽스]커뮤니케이션을 위한 그래픽 본 포스팅은 R for Data Science 를 기반으로 작성되었습니다. 1. 소개 이 장에서는 좋은 그래픽을 만드는 데 필요한 도구에 중점을 둡니다. 이번 장을 학습할 때는 일반 시각화 책과 함께 사용하는 것이 좋습니다. 시각화를 만드는 방법이 아니라 효과적인 그래픽을 만들기 위해 생각해야 하는 것에 중점을 둡니다. 1.1. 전제 조건 ggplot2 패키지에 초점을 맞출 것입니다. 또한 데이터 조작을 위해 약간의 dplyr와 ggrepel 및 viridis를 포함한 몇 가지 ggplot2 확장 패키지를 사용할 것입니다. 여기에서는 로드하는 대신 :: 표기법을 사용하여 해당 기능을 참조합니다. 이렇게 하면 ggplot2에 내장된 기능과 다른 패키지에서 가져온 기능을 명확히 구별하는 데 도움이 됩니다. .. 2021. 7. 20.
[R데이터다루기]데이터 변환 본 포스팅은 R for Data Science를 기반으로 작성되었습니다. 1. 소개 시각화는 통찰력 생성을 위한 중요한 도구이지만 필요한 형식으로 데이터를 정확히 얻는 경우는 매우 드뭅니다. 그래서 시각화는 데이터 탐색이라고 많이 표현합니다. 데이터 작업을 좀 더 쉽게 하기 위해 변수의 이름을 바꾸거나 관측치를 재 정렬하고 싶을 때도 있습니다. 2013년에 뉴욕시에서 출발하는 항공편에서 dplyr 패키지와 새로운 data set을 사용하여 데이터를 변환하는 방법을 배워 보겠습니다. 1.1. 전제 조건 이 장에서 Tidyverse의 또 다른 핵심 패키지인 dplyr 패키지를 사용하는 방법에 대해 알아 보겠습니다. nycflights13 패키지의 데이터를 사용해서 주요 내용을 설명하고 데이터를 이해하는 데 .. 2021. 7. 18.
[R그래픽스]데이터 시각화 본 포스팅은 R for Data Science를 기반으로 작성되었습니다. 1. 소개 “The simple graph has brought more information to the data analyst’s mind than any other device.” — John Tukey — 이 장에서는 ggplot2 패키지를 사용하여 데이터를 시각화하는 방법을 알아보겠습니다. R에는 그래프를 만들기 위한 여러 패키지가 있지만 ggplot2는 가장 훌륭하고 다재다능한 시스템 중 하나입니다. ggplot2는 그래프를 설명하고 작성하기 위한 일관된 시스템인 그래픽 문법을 구현합니다. ggplot2를 사용하면 하나의 시스템을 학습하고 여러 곳에 적용하여 더 빠르게 수행할 수 있습니다. 시작하기 전에 ggplot2에 .. 2021. 7. 17.
[R데이터구조]Tibble 본 포스팅은 R for Data Science 를 기반으로 작성되었습니다. 1. 소개 R의 전통적인 데이터 구조는 데이터 프레임(data.frame)입니다. 이번 장에서는 "tibbles"에 대해서 알아보기로 하겠습니다. Tibble은 데이터 프레임이지만 삶을 조금 더 쉽게 만들기 위해 일부 오래된 동작을 조금 조정합니다. R은 매우 오래된 언어이며, 10~20년 전에는 유용했던 일부 기능이 이제는 방해가 되기도 합니다. 기존 코드를 깨뜨리지 않고 기본 R을 변경하는 것은 어렵기 때문에 대부분의 혁신은 신규 패키지에서 발생합니다. 여기에서 우리는 tidyverse에서 작업을 좀 더 쉽게 만들어주는 데이터 프레임을 제공하는 tibble 패키지에 대해 좀 더 자세히 알아보겠습니다. 대부분의 경우 tibble.. 2021. 7. 15.
[R변수형식]날짜와 시간 데이터 본 포스팅은 R for Data Science 를 기반으로 작성되었습니다. 1. 날짜와 시간 생성하기 시간에 있어 순간을 참조하기 위한 세 가지 유형의 데이터가 있습니다.1) 날짜(Data), 2) 시간(Time), 3) 날짜와 시간 병합(Date-Time) : 이 유형은 3가지 특정 시점을 유니크하게 식별할 수 있습니다. 현재 날짜를 알고 싶으면 today() 함수를 사용하면 되고, 현재 날짜와 시간을 동시에 알고 싶으면 now() 함수를 사용하면 됩니다. 만약 특정 날짜 혹은 특정 시간을 생성하려면 아래 3가지 방법이 있습니다. 1) 문자열 활용 2) 날짜와 시간 구성 요소 활용 3) 기존에 존재하는 날짜와 시간 object 활용 1.1. 문자열 활용 날짜와 시간 데이터는 자주 문자열로 제공됩니다. .. 2021. 7. 14.
반응형