Home ChungLab Wiki
    • 설명
    • 못 고치는 문서
    • Menu
      • Navigation
      • RecentChanges
      • FindPage
      • 사이트맵
      • Help
      • HelpContents
      • HelpOnMoinWikiSyntax
      • 보기
      • 첨부
      • 정보
      • 원문 보기
      • 인쇄용 화면
      • 수정
      • 로드
      • 저장
    • 로그인

    Navigation

    • FindPage
    • HelpContents
    • FunReading

    Upload page content

    You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

    File to load page content from
    Page name
    설명

    • Class
    • Statistics
    • RBasic2

    R 기본 2: 외부 데이터 불러오기

    데이타를 일일히 수동 입력하는 일은 지루하고 고단한 일.

    • 누군가 입력 해 놓으면 그것을 공유해서 쓴다거나,
    • 입력도 여럿이 나눠서 같이 하는 것이 좋습니다.

    데이타를 예를 들어 MS excel 로 입력하면 그것을 열어볼 때도 excel이 필요합니다.

    • 데이타 열람에 특별한 유료 소프트웨어(예: MS excel, MS word, HWP, Adobe 등)가 필요하다면 '데이타 공유' 측면에서는 바람직하지 않습니다.
    • plain text file 파일로 저장하면 특정 소프트웨어에 종속되지 않고 열 수 있습니다.
    • plain text file은 파일 이름이 .txt이나 .csv로 끝나며 메모장 등 기본 프로그램으로도 열 수 있습니다. 당연히 MS-word나 excel로도 열 수 있습니다.

    CSV 파일 읽기

    Comma-Separated Value 파일은 데이타를 콤마 , 로 구분하는 형식입니다.

    • 예를 들어 서울시 자치구별 의료인 숫자를 CSV 형식으로 보면 이렇게 보입니다.

    • 특정 소프트웨어에 종속되지 않기 위하여, 공개 데이터는 CSV 파일 형식으로 제공되는 경우가 많습니다.
    • 참고: 공공데이터포털 https://www.data.go.kr

    서울시 공공데이터 읽기

    서울시 코로나19 확진자 현황페이지에서 [내려받기(CSV)]를 클릭하여 자료를 CSV 파일 형식으로 내려받고 다음을 실행합니다.

    • RStudio.cloud를 사용중이면 다운로드 받은 파일을 cloud 서버에 복사해야 합니다.
    • RStudio.cloud 화면 우측 아래 Files 창에서 [Upload]를 클릭하여 서버에 복사할 수 있습니다.

       1 fileName = file.choose() # 마우스로 방금 다운로드 받은 파일 위치를 지정해주세요.
       2 df <- read.csv(fileName)
       3 # df <- read.csv(file.choose()) 이렇게 해도 같은 의미
       4 head(df)
       5 str(df)
    
    1. file.choose() 함수는 사용자에게 파일 위치를 물어보는 함수입니다.
    2. 사용자의 선택을 fileName 이라는 변수에 저장합니다. fileName 대신 다른 아무 이름이나 써도 무방합니다. 대소문자 구분한다는 것만 기억하세요.
    3. read.csv() 함수는 지정한 파일을 CSV 형식으로 간주하고 읽어서 data.frame 형식으로 출력합니다.
    4. 그리고 read.csv() 함수의 출력값을 df 라는 변수에 저장합니다.

    file.choose() 함수를 쓰지 않고 이렇게 직접 파일을 지정해 줄 수도 있습니다.

       1 df <- read.csv('C:/Users/계정이름/Downloads/서울시 코로나19 확진자 현황.csv')
       2 # () 안 내용은 방금 다운로드 받은 파일 위치에 맞게 수정하세요.
    

    macOS 사용시 추가로 고려해야 할 사항

    macOS나 RStudio.cloud 에서 '서울시 코로나19 확진자 현황.csv' 파일을 read.csv() 하면 에러가 생깁니다.

    • 저 파일을 작성한 사람이 아마 Windows system을 사용했을 겁니다. Windows와 macOS는 한글 처리 방법이 다릅니다. ([[/RKorean|참고자료)
    • 해결방법: read.csv() 함수를 사용할 때 fileEncoding = 'euc-kr' 옵션을 추가합니다.

       1 df <- read.csv('~/Downloads/서울시 코로나19 확진자 현황.csv', fileEncoding = 'euc-kr')
    

    구별 환자 수 plot() 하기

    df data.frame에서 보면 df$지역에 각 환자의 주소지(자치구)가 저장되어 있습니다.

    • 자치구별 환자수를 헤아리려면 각 자치구가 몇번 등장하는지 세어야 합니다.
    • table() 함수가 그 역할을 합니다.

       1 df <- read.csv('~/Downloads/서울시 코로나19 확진자 현황.csv', fileEncoding = 'euc-kr')
       2 pts <- table(df$지역)
       3 head(pts)
       4 # macOS라면 다음을 실행 (한글 출력시 사용할 폰트를 지정)
       5 # par(family = "AppleGothic")
       6 plot(pts)
    

    pts.png

    오름차순 (혹은 내림차순)으로 정리하면 plot이 더 보기 좋습니다.

    • sort() 함수를 써서 정렬합니다.

    • decreasing = TRUE (혹은 decreasing = FALSE) 옵션으로 정렬 방향 설정. 언급없으면 FALSE로 간주

       1 pts <- sort(pts)
       2 plot(pts)
       3 # 혹은
       4 pts <- sort(pts, decreasing = TRUE)
       5 plot(pts)
    

    pts_sorted.png

    환자수가 50명 미만인 구는 제외 해 볼까요?

    다음은 pts 벡터를, 값이 49를 초과하면 TRUE, 아니면 FALSE로 표시되는 T/F vector로 변환합니다.

       1 pts > 49
    

    이렇게 하면 pts 벡터에서 pts > 49가 TRUE인 data point만 선택해서 출력합니다.

       1 pts[ pts>49 ]
    

    row_selection.png

    위 식을 plot()에 feeding 합니다.

       1 plot( pts[ pts>49 ] )
    

    plot_selectedRow.png


    과제: '서울시 코로나19 확진자 현황.csv'에서 확진일별 환자수를 plot으로 그리세요.


    /CentralLimitTheorem   /ChiSquared   /Clustering   /InstallR   /InstallRStudio   /Lies   /NormalDistribution   /RBasic   /RBasic1   /RBasic2   /RBasic3   /RCloud   /RIntro   /RKorean   /T-Test  
    Copyright © ChungLab. Built on MoinMoin and Bootstrap. All Rights Reserved.