홍동이의 성장일기

[👩‍💻TIL 11일차 ] 유데미 스타터스 취업 부트캠프 4기 본문

교육/유데미 스타터스 4기

[👩‍💻TIL 11일차 ] 유데미 스타터스 취업 부트캠프 4기

홍동2 2023. 2. 20. 18:46

목차

 

[160차시]데이터 처리과정에서 R의 역할

[161차시]R 및 Rstudio 설치하기

[162차시]R 및 RStudio 기본 사용방법 이해

[163차시]working directory 설정 및 프로젝트 만들기

[164차시]유용한 환경 설정 알아보기

[165차시]데이터 타입 알아보기

[166차시]데이터 종류

[167차시]R 자료 구조

[168차시]데이터자료 구조 실습

[169차시]변수 이해하기

[170차시]함수 이해하기

[171차시]패키지 이해하기

[172차시]변수, 함수, 패키지 정리 및 실습

 


[160차시]데이터 처리과정에서 R의 역할

데이터 처리과정에서 R의 역할


[161차시]R 및 Rstudio 설치하기

 

R 설치

 

📍 R Project 홈페이지 접속 > CRAN > Ctrl + F: korea > 아무거나 들어가서 자신의 환경에 맞는 링크 클릭 > R 처음 설치 시: install R for the first time > 큰 글씨 클릭

 

 

R: The R Project for Statistical Computing

 

www.r-project.org

 

 

📍 C드라이브에 'R' 파일 만들기 > 해당 위치에 설치

 

R 스튜디오 설치

📍 product > RStudio download > RStudio Desktop > Install RStudio

※ 강의와 경로가 달라서 새로 작성

 

 

Posit

The best data science is open source. Posit is committed to creating incredible open-source tools for individuals, teams, and enterprises.

posit.co

 

📍 C드라이브에 'RStudio' 파일 만들기 > 해당 위치에 설치

 

해당 폴더들에 프로그램이 깔려있다면 성공적으로 설치한 것이다.


[162차시]R 및 RStudio 기본 사용방법 이해

RStudio 구성요소

 

Script 창

  • R코드를 작성하는 창
    • 작성한 코드를 파일로 저장 및 불러오기 가능
    • ".R" 확장자 사용
  • 함수에 대한 자동완성 기능 제공
  • Run 버튼 눌러 코드 실행

Console 창

  • 간단한 코드 작성 및 실행
  • 코드 실행 결과 확인
  • 오류 확인

 

Terminal 창

  • CMD 창과 동일
  • 커맨드라인 통한 OS 조작

Environment 창

  • 로딩된 데이터셋 표시
  • 선언된 변수/함수 표시

 

History 창

  • 실행한 명령어(코드) 로깅

 

Connections 창

  • DB 서버와 연결 관리

Files 창

  • 파일 탐색기와 동일

 

Plots 창

  • 그래프 그린 결과물 출력

 

Packages 창

  • 패키지 관리

 

Helper 창

  • 도움말

 

Viewer 창

  • 웹 관련 HTML코드 실행 결과물 출력 창

 

R 맛보기

 

Console 창 사용해보기

  • 기본적인 계산 기능
    : 사칙연산, 제곱
  • 문자열 출력 기능
    : Print("x")
  • 데이터셋 로드
    • 내장된 데이터셋 로딩 ex) airquality
    •  head: 상위 6개, tail: 하위 6개 데이터 출력

 

  • 정답
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> print((67+72+74+62+56+66)/6)
[1] 66.16667

 

Script 저장하기

  • File > save (단축키: Ctrl + S)
  • File 저장 다이얼로그 생성되며 파일이름 수정하여 저장 가

 

Script 불러오기

  • File > open File (단축키: Ctrl + O)
  • ".R" 확장자를 가지는 파일 선택하여 불러오기 가능

[163차시]working directory 설정 및 프로젝트 만들기

Working directory

내장함수 source

  • source 함수: 만들어진 스크립트(.R) 파일의 내용을 import
    → 스크립트 모든 행을 run하는 것과 동일
    • 절대 경로 사용
    • 상대 경로 사용: 서로 다른 폴더에 같은 이름을 가진 파일이 있다면 Working director을 기준으로 함

 

Working directory란?

  • 작업을 위한 폴더
  • 데이터셋, 파일 등 불러오기/저장 작업 수행하는 기본 폴더
  • 프로그래밍에 필요한 파일 관리 용이
    : 새 폴더를 만들어 Working directory로 지정 후, R 관련 모든 파일을 한 폴더에 관

 

Working directory 확인

  • 현재 Working directory 경로 확인 방법: getwd()
  • Working directory 내부 파일 확인 방법: dir()

 

Working directory 수정

  1. 임의의 새 폴더 생성 (기존 폴더도 가능)
  2. setwd 커맨드 사용하여 Working directory 지정

    ※ RStudio 재시작시 유지 안됨 
    Rstudio를 재시작해도 유지하고 싶다면 Tools > Global Options > Default Working directory 수정

 

  • 실습

 

프로젝트 생성
  1. 우측 상단 Project > New Project 
  2. New Direcoty > 프로젝트명 적고 Create Project

 

다른 컴퓨터에서 프로젝트 열기

  1. 우측 상단 Project > Open Project
  2. 원하는 프로젝트 파일 열기

→ 작업환경이 바뀌어도 빠르게 환경구축이 가능하다.

 


[164차시]유용한 환경 설정 알아보기

환경 설정 범위

Global 환경 설정

  • Global Options
  • Rstudio 환경 내에서 실행되는 모든 프로젝트에 적용

 

Project 환경 설정

  • Project Options
  • 프로젝트 별로 다르게 환경 설정 가능
  • 현재 프로젝트에만 설정 사항 반영
  • 프로젝트가 없는 경우 환경 설정 불가능

 

Soft Wrap 기능

: 자동 줄바꿈 기능

  • Source 창에서 코드가 길어질 경우 자동 줄 바꿈
  • Tools > Global Options > Code > "Soft-wrap R source" 체크박스 클릭

 

Line 하이라이트 기능

: Source 창에서 선택된 행 하이라이트 기능

  • Tools > Global Options > Code > Display > "Highlight selected line" 체크박스 클릭

 

폰트 및 배경 설정

: 폰트 및 source 창 배경 커스터마이징 가능

  • 폰트 타입 및 크기 변경 가능
  • 다양한 배경 탬플릿 제공
  • Tools > Global Options > Appearance > 폰트, 배경 값 조절

 

Editor theme: Tomorrow Night Bright

난 이렇게 바꿨다!😀 주피터 노트 테마 변경보다 훨씬 간편하고 즉각적으로 바뀌는 모습을 확인할 수 있어서 좋다.

다크모드 짱짱맨 🦇

 

인코딩 방식 설정

: 텍스트 인코딩 방식 변경 기능

  • 한국어 깨지는 경우 확인해야할 설정
  • Tools > Project Options > Code Editing > Text encoding > UTF-8로 변경

 

유용한 단축키

 

  • Ctrl + Shift + N: 새 소스파일 (스크립트 창)
  • Ctrl + Shift + C: 코드 주석화
    → 범위 지정하여 여러 줄 한번에 주석화 가능
  • Ctrl + Shift + Enter: 소스코드 실행
    → 현재 작성중인 Source 파일에 source 함수 적용
  • Ctrl + 1~9: 화면이동 단축키
    • 숫자 별 지정된 창으로 커서 이동
    • 1: Source 창, 2: Console 창, 5: Files 창, 6: Plots 창, 8: Environment 창 등
  • Shift + Alt + K: 모든 단축키 확인

[165차시]데이터 타입 알아보기

데이터 타입

Object(객체)

  • R이 다루는 가장 기초적인 구조
    • Atomic of R
    • 한국어의  "형태소"와 유사
  • 데이터 값은 객체에 담김

 

Class

  • 객체의 타입
  • Class 확인: class() 함수 사용

 

R은 데이터를 처리할 때 class에 따라 다르게 분류하여 처리


Numeric (수치형 타입)

  • 숫자를 나타내는 데이터 타입

 

  • [Quiz] 0의 데이터 타입은?

 

Integer (정수형 타입)

  • 정수값만을 나타내는 데이터 타입
  • 메모리 관리에 효율적

  • R에서 숫자는 기본적으로 Numeric 타입으로 선언됨
    객체 타입을 Integer로 지정하려면 값 뒤에 'L' 기입

  • [Quiz] Console 창에 'class(1.1L)'를 입력하였을 때 결과는?

→ 1.1은 정수가 아니기 때문에 'L'을 붙이지 말라는 warning message가 발생한다.

 

Logical (논리형 타입)

  • 참, 거짓을 나타내는 데이터 타입
  • TRUE, FLASE (T, F)
  • [Quiz] Console 창에 'class(True)' 입력하였을 때 결과는?

→ 에러가 발생한다. 반드시 모든 글자가 대문자여야함!

 

Character (문자형 타입)

  • 문자 또는 문자열을 나타내는 데이터 타입
  • 따옴표(') 또는 쌍따옴표(")로 감싸는 형태로 표현

  • [Quiz] Console 창에 'class("1")' 입력하였을 때 결과는?

 

Complex (복소수형 타입)

  • 복소수 값을 나타내는 데이터 타입
  • 실수값 + 허수값(i) 형태로 표현
  • 실세계 데이터에서는 찾아보기 힘듦

 

특별한 데이터 객체

Inf (Infinity)

  • 무한히 큰 값을 나타내는 데이터 객체
  • 일반적인 계산에 사용가능

  • [Quiz] '1/Inf'의 결과값은?

 

NA (Not Available)

  • 결측값을 나타내는 데이터 객체
    → 현실 데이터중에는 결측값이 존재하는 경우가 흔함
  • NA 처리를 위한 다양한 함수 존재

 

NaN (Not a Number)

  • 수치값으로 표현할 수 없는 값을 나타내는 데이터 객체
    ex) 0/0
  • 결측값으로 처리

[166차시]데이터 종류

실세계의 데이터셋 - 자료구조 왜 알아야하나?
  • 데이터셋(Dataset): 데이터들의 집합, 모음
  • 매우 다양한 종류의 데이터셋들이 존재
    : 서울 하루간 시간별 날씨, 학교 과목별 시험 성적 
  • 데이터 양이 아주 많음
    • 빠른 정보 추출을 위해 효율적인 데이터 탐색, 관리 중요
    • 특정한 규칙으로 컴퓨터 상에 표현 = 자료구조

 

데이터 종류

데이터 차원에 따른 구분

  • 1차원: 단일 주제 데이터들을 모아 놓은 구조
  • 2차원: 복수 주제 데이터들을 모아 놓은 구조
    • 가장 활발히 사용되는 데이터 종류
      - 시각화에 가장 적합
      - 사람의 눈은 2차원을 인식하기 때문
  • N차원: N-1차원 데이터들을 모아 놓은 구조

 

데이터 구성에 따른 구분

  • 단일형: 한가지 타입의 데이터로만 구성된 데이터
  • 다중형: 여러가지 타입의 데이터로 구성된 데이

 

데이터 값 연속성에 따른 구분

  • 범주형
    • 데이터 값이 이산적
    • 보통 논리값 또는 문자로 표현
    • 산술 연산 불가능
  • 수치형
    • 데이터 값이 연속적
    • 수치로 표현
    • 산술 연산 가능
    • 수치형 값은 범주형으로 표현 가능

[167차시]R 자료 구조

개요

차원 및 데이터 구성에 따라 구조 구분

 

벡터(Vector)

  • 가장 기본적인 자료 구조
    • 1차원 구조
    • 데이터 타입이 동일한 값들의 모음 (단일형)
  • 생성 방법
    • c() 함수 사용
    • vector() 함수 사용
      - 사용방법: vector("데이터 타입", length = 벡터 크기)
      - 실제로 값을 넣지 않았기 때문에 기본값으로 초기화
  • [Quiz] 벡터의 데이터 타입은 무엇일까?
    - class(c(1,2,3))
    - class(c("a", "b", "c"))
    - class(c(T, T, F))

→ 단순 값 또한 모두 vector 자료구조로 표현됨

- Vector은 가장 기본적인 데이터 자료구조

ex) 10 == c(10): 숫자 10을 포함하는 크기가 1인 numeric vector

 

  • [Quiz] 벡터에 서로 다른 데이터 타입을 넣는다면 어떻게 될까?
    - c(1.7, "a")
    - c(TRUE, 2)
    - c("a", TRUE)

자동 형변환 일어남: 단일형 값으로 표현

 

형변환

: 데이터 타입이 다른 타입으로 변경되는 것

  • 자동 형변환: 컴퓨터에 의해 자동으로 형변환이 일어남
  • 자동 형변환 우선 순위: Character > Numeric > Logical

 

행렬(Matrix)

  • Vector의 집합
    • 단일형, 2차원 구조
    • 행(row), 열(col)로 구성
  • 생성방법
    • matrix() 함수 사용
      - 사용방법: matrix(nrow = 행 크기, ncol = 열 크기)
    • Vector값 사용하여 matrix 생성 가능
      - 사용방법: matrix(vector, nrow = 행 크기, ncol = 열 크기)
    • byrow 옵션
      - 데이터를 "행"부터 채움
      - 기본값: FALSE

  • [Quiz] 행렬의 데이터 타입은 무엇일까?
    - class(matrix(nrow=2, ncol=3)

→ 행/열 크기를 담는 dim 속성을 추가로 가짐

※ Matrix에서 dim은 크기가 2인 vector

 

배열(Array)

  • dim 속성 크기가 2이상인 자료구조
  • 생성방법
    • array() 함수 사용
      - array(dim=(2,2,3))
      - Vector 값 사용하여 array 생성 가능
    • Matrix == dim 크기가 2인 array

 

리스트(List)

  • 서로 다른 데이터 타입이 존재하는 값들의 모음
  • 현실 세계에서 아주 흔하게 존재하는 데이터 구조
  • 생성방법
    • list() 함수 사용

  • [Quiz] List에 다른 자료구조를 넣을 수 있을까?
    - list(c(1,2,3), 2, T)
    - list(list(1,T,"a"), 1)
    - list(matrix(nrow=2, ncol=3), "a", 5)

→ Vector, matrix, list 등의 자료구조 포함 가능

※ list안에는 모든 자료구조가 포함될 수 있다. 

 

데이터 프레임

: List의 집합

  • 다중형, 2차원 구조
  • 행(row), 열(col)로 구성
    • 각 행은 list 취급
    • 각 열은 vector 취급
  • 열 별로 다른 데이터 타입 저장 가능
  • 데이터셋 파일 로딩 시, 주로 데이터 프레임 구조 사용
    : Table, excel, csv 형식 데이터
  • 생성 방법
    • data.frame() 함수 사용
      - 사용방법: data.frame(vector, vector, ...)
      - 각 vector는 column 값으로 삽입됨

[168차시]데이터자료 구조 실습

Quiz
  1. R 언어가 다루는 가장 기초적인 구조는 Object다.
  2. 데이터 타입을 확인하기 위해서는 class() 함수를 사용한다.
  3. 기본적인 데이터 타입으로는 수치형, 정수형, 논리형, 문자형, 복소수형 등이 있다.
  4. 결측치를 나타내는 데이터 타입은 NA다.
  5. 수치적으로 표현할 수 없는 값을 나타내는 데이터 타입은 NaN이다.
  6. 데이터들의 집합 또는 모음은 데이터셋이라 부른다.
  7. 단일형 데이터는 한가지 데이터 타입으로만 구성된다.
  8. 범주형 데이터는 수치형 데이터로 변환 가능하다. (X)
    → 수치형 데이터를 범주형 데이터로 변환하는 것은 가능하다.
  9. 가장 기본적인 데이터 자료구조는 Vector이다.
  10. 다중형 데이터 자료구조이며, 현실 세계에 흔하게 존재하는 데이터 구조는 List이다.
  11. 단일형, 2차원 데이터 자료구조는 Matrix, Array이다.

 

실습 - 은행 대출상품 마케팅

  • 각 컬럼별 데이터 타입
Age Numeric (Integer) Job Character
Marital Character Balance Numeric
Campaign Character Y Logical
  • 각 컬럼별 데이터가 범주형인지 수치형인지 설명하시오.
Age 수치형/범주형 Job 범주형
Marital 범주형 Balance 수치형
Campaign 범주형 Y 범주형

 

#12차시 실습 Q3
age <- c(30,33,35,30,68,33) #나이 벡터 생성
job <- c("무직", "서비스", "관리직", "관리직", "은퇴", "관리직") #직업 벡터 생성
marital <- c("결혼", "결혼", "미혼", "결혼", "사별", "결혼") # 결혼 유무 벡터 생성
balance <- c(1787,4789,1350,1476,4189,3935)
campaign <- c("휴대폰", "휴대폰", "휴대폰", "Unknown", "유선전화", "휴대폰") # 상담 매체 벡터 생성
y <- c(F,F,F,F,T,T) # 상담 결과 벡터 생성
result <- data.frame(age, job, marital, balance, campaign, y) # 데이터 프레임 생성
print(result) # 출력


[169차시]변수 이해하기

변수의 개념
  • 변할 수 있는 값
  • 프로그래밍에서의 변수
    • 데이터를 저장하기 위해 이름을 할당받은 메모리 공간
    • 프로그램 내에서 어떤 값을 저장해 놓을 수 있는 보관함
  • R에서의 변수란?
    • 객체(Object)를 저장해 놓는 보관함 

사용 방법
  • 변수 사용 방법: a <- 10
    • 'a'라는 변수를 선언
    • '<-' 연산자 사용하여 '10'이라는 수치형 값 할당
  • 선언과 할당
    • 선언: 변수명을 등록하여 프로그램에 변수의 존재를 알리는 과정
    • 할당: 변수에 값을 저장하는 과정

 

변수 초기화
  • 초기화란?
    • 최초로 값을 저장하는 행위
    • a <- 10: 'a'라는 변수 선언과 동시에 10으로 변수를 초기화
  • 변수 선언만 하기
    • NULL값 사용: a <- NULL
    • 할당할 값이 미정인 상태에서 변수 선언만 하고싶은 경우 사용

 

변수 할당
  • 변수는 연산의 결과를 할당 가능
a <- 10+20
print(a)
b <- a-5 # 변수도 산술 연산에 사용 가능 (데이터 타입이 맞을 시시)
print(b)
c <- c(1,2,3)+5 # 벡터에 대한 산술 연산 가능
print(c)
d <- (10>5)
print(d)
e <- b+d # 산술 연산에서 TRUE는 1
print(e)

  • 변수는 하나의 객체만 저장 가능
a <- 5,10 # 에러 발생
a <- c(5,10) # vector는 하나의 객체이기 때문에 저장 가능
print(a)

 

  • 특별한 데이터 타입 할당가능
a <- Inf
print(a)
b <- 2/0
print(b)
b2 <- -2/0
print(b2)
c <- NA
print(c)
d <- NaN
print(d)
e <- 0/0
print(e)

 

  • 한번에 여러 변수 선언 또는 할당 불가능
#에러 발생
a,b <- 5,10 

#정상 동작
a<-5
print(a)
b<-10
print(b)

 

선언한 변수 확인하기
  • Print 함수 또는 Console 창에서 변수명 입력하여 확인
  • Rstudio의 Environment 창
    • 선언한 변수 및 할당된 값 간편하게 확인가능

 

변수 작명 규칙
  • 첫글자에는 문자 또는 마침표(.)만 사용가능
    • 숫자, 밑줄('_')로 변수명 시작 불가능
  • 두번째 글자부터는 숫자, 밑줄 사용가능
    • 특수문자는 사용할 수 없음
#가능
a <- 10
.a <- NULL
a1 <- 10
#에러발생
_a <- 10
1a <- 10

  • 알파벳 대문자와 소문자는 별개의 문자 취급
a <- 10
print(a)
A <- 20
print(A)

  • 변수명 중간에 빈 칸 넣을 수 없음
a bd <- 10 #에러 발생
a_bd <- 20 #정상 동작, 빈칸과 같은 효과를 내고 싶다면 밑줄 사용 권장

  • 한국어 변수 사용가능
    : 인코딩 이슈 등 발생할 수 있기 때문에 권장하지 않음
변수 <- 10
print(변수)


[170차시]함수 이해하기

함수의 개념
  • 기본적인 함수명 y = f(x)
    • 구성
      - x: 입력 변수
      - f: 함수
      - f(x): 함수에 입력값을 적용
      - y: 결과 변수
  • 함수란?
    • 입력값을 넣고 실행 → 결과값 리턴하는 장치

 

R의 함수
  • 함수는 실행 내용에 대한 정의가 필요
    • 어떠한 입력값이 오던지 정의된 내용대로 실행하여 결과값 리턴
  • R에서의 함수
    • 모든 객체 입출력 값으로 사용 가능
      : 수학의 함수와 다른 부분
a <- TRUE
b <- class(a) #a에 대한 데이터 타입을 문자열로 리턴
c <- print(a) #입력받은 a를 콘솔창에 출력. 문자열이 아닌 변수값을 그대로 리턴함
class(b)
class(c)
y <- sqrt(25)
print(y)
y2 <- mean(c(1,2,3,4,5))
print(y2)

 

매개변수(Parameter, Argument)
  • 함수의 입력 변수를 부르는 명칭
  • 프로그래밍 용어

매개변수의 입력

  • 함수의 정의에 알맞은 매개변수 입력 필요
  • 정의에 맞지 않는 매개변수 입력시, 오작동 또는 에러 발생
mean(c(1,2,3,4,5))
mean(c("1","2","3"))

 

매개변수 형식
  • Mean함수는 3개의 매개변수 존재: x, trim, na.rm
  • "매개변수명 = 매개변수값" 형태로 입력
mean(x=c(1,2,3,4,5), trim=0, na.rm=FALSE)

  • 매개변수 생략: 매개변수의 값을 정의 순서대로 입력하는 경우, 매개변수명 생략 가능
  • 매개변수 생략
    • 매개변수는 필수 매개변수와 선택적 매개변수로 구분
      : 기본값은 함수 선언시 정의됨
      - 기본값 지정X: 필수 매개변수
      - 기본값 지정O: 선택적 매개변수

    • 선택적 매개변수는 생략 가능
      : 생략되는 경우 기본값 사용
mean(x=c(1,2,3,4,5), trim=0, na.rm=FALSE) #정식문법
mean(x=c(1,2,3,4,5), trim=0) #선택적 매개변수 na.rm생략
mean(x=c(1,2,3,4,5)) #선택적 매개변수 모두 생략
mean(c(1,2,3,4,5),0,FALSE) #매개변수명 생략
mean(c(1,2,3,4,5)) #매개변수명 및 선택적 매개변수 생략

 

내장 함수란?
  • 내장 함수: 프로그램에서 기본적으로 정의되어 제공하는 함수
    ex) print, class, sqrt, mean
  • 사용자 정의 함수: 사용자가 직접 정의하여 만들어내는 함수

 

AS 함수

  • 데이터 형식을 강제로 변환시킴
  • 데이터 우선순위 낮은 타입 → 높은 타입으로 변화는 모두 가능
  • 데이터 우선순위 높은 타입 → 낮은 타입으로 변화는 일부 가능
  • 데이터 우선순위: Character > Numeric > Logical
#낮은 우선순위 -> 높은 우선순위
vec <- c( T, F, FALSE) #logical 타입 vector 생성
vec2 <-as.numeric(vec) # c(1, 0, 0). numeric 타입 강제 형변환. T=1, F=0으로 취급
vec3 <-as.logical(vec2) # c(T, F, F). 다시 logical 타입 변환 가능. 0 초과의 수 =T, 0 이하의 수=F 취급
vec4 <-as.character(vec3) # c(“TRUE”, “FALSE”, “FALSE”)

#높은 우선순위 -> 낮은 우선순위
test <- c(“char”, “10”, “TRUE”)
testToNum <- as.numeric(test) # c(NA, 10, NA). 숫자로 이루어진 문자만 형변환 가능
testToLogic <- as.logical(test) # c(NA, NA, TRUE). 논리형 값과 동일한 문자만 형변환 가능

※ 숫자와 논리형 데이터 타입간에는 모두 형변환이 가능하지만 논리 → 숫자 시  True = 1, False = 0으로 형변환이 일어나고, 숫자 → 논리로 형변환이 일어나는 경우에는 양수값이 TRUE, 0을 포함한 음수값은 FALSE로 변환된다.

 

seq 함수

: From부터 by씩 증가하는 length개의 숫자로 이루어진 벡터 생성

 

rnorm 함수

: 평균이 mean, 분산이 sd인 정규분포를 따르는 n개의 숫자로 이루어진 벡터 생성

 

runif 함수

: [min, max] 범위 사이 n개의 난수로 이루어진 벡터 생성

seq(length=5, from=3, by=2) # c(3, 5, 7, 9, 11)
rnorm(n=4, mean =0, sd=1) # 평균 0, 분산 1인 정규분포 따르는 4개 데이터 생성
runif(n=4, min=1, max=100) # 최소값 1, 최대값 100 사이의 무작위 값 4개 생성

[171차시]패키지 이해하기

패키지(Package) 개념
  • 함수들의 모음
    : 유사한 기능을 하는 함수들을 한데 묶어 관리하는 꾸러미
  • R 주요 패키지 소개

 

패키지 탐색 방법

CRAN 사용

  • R언어에서 사용 가능한 모든 패키지 알파벳순으로 정리
  • 패키지에 대한 자세한 명세 및 패키지 다운로드 가능
 

CRAN Packages By Name

 

cran.r-project.org

 

Ctrl + F > mapsf 검색 > 위에위에 maps

※ Documentation을 통해 사용법 확인 가능

 

  • 기능에 따른 패키지 분류 존재

 

 

CRAN Task Views

CRAN Task Views CRAN task views aim to provide some guidance which packages on CRAN are relevant for tasks related to a certain topic. They give a brief overview of the included packages which can also be automatically installed using the ctv package. The

cran.r-project.org

 

인터넷 키워드 검색

  • R 유저간 네트워크 매우 활발
  • 검색 엔진의 발전으로 간편한 검색 가능

 

패키지 설치 및 사용

설치 방법

  • 함수를 이용하여 설치
    : install.packages("패키지명")
  • R 스튜디오 인터페이스 이용하여 설치
    : Packages > Install > 패키지명 적은 후 Install
  • R 스튜디오 인터페이스 이용한 오프라인 설치 (패키지 파일을 가지고 있는 경우 사용)
    : Packages > Install > Install From > 다운로드 받은 패키지 파일 open > Install

 

설치 확인

  • library()
  • Package 창 활용

[172차시]변수, 함수, 패키지 정리 및 실습

QUIZ
  1. 변수는 객체를 담는 보관함 역할을 하며 <- 연산자를 통해 값을 할당한다.
  2. 변수를 선언만 하고 싶은 경우, NULL 값으로 초기화한다.
  3. 변수는 한번에 두 개 이상의 값으로 초기화 할 수 있다. (X)
    : 반드시 한번에 하나의 값으로 초기화 할 수 있다.
  4. 변수 선언 시, 숫자 또는 밑줄('_')로 변수명이 시작하는 것은 불가능하다. (O)
  5. 변수 선언 시,  변수명 두번째 글자부터는 특수문자 사용이 가능하다. (X)
    : 변수명에 특수문자는 사용이 불가능하다.
  6. 변수 선언 시, 알파벳 대문자와 소문자는 구분하지 않는다. (X) 
    : 구분한다.
  7. 함수는 매개변수를 입력받아 정의된 내용을 실행하며, 결과값을 리턴하는 장치이다.
  8. 프로그램에서 기본적으로 정의되어 제공하는 함수를 내장함수라 부른다.
  9. 데이터 타입 강제 형변환 해주는 함수명은 as이다.  
  10. 함수의 매개변수는 필수적 매개변수와 선택적 매개변수로 나뉘며, 필수적 매개변수는 생략가능하다. (X)
    : 선택적 매개변수만 생략가능하다.
  11. 내장 함수외에 사용자가 직접 함수를 만들 수 있으며, 사용자가 직접 만든 함수는 '사용자 정의 함수'라고 부른다. (O)

 

실습

#16차시 실습
age_mean <- mean(age)
print(age_mean)
balance_mean <- mean(balance)
print(balance_mean)

 

yToNum <- as.numeric(y)
yCount <- sum(yToNum)
print(yCount)

 

install.packages("stringr") # 설치
library(stringr) # 로딩

# job 컬럼 수정
job_new <- str_replace(job, "은퇴", "무직") # "은퇴"값을 "무직'으로 변경
print(job_new)

# marital 컬럼 수정
marital_new <- str_replace(marital, "결혼", "T") #"결혼"값을 "T"로 변경
print(marital_new)
marital_logical <- as.logical(marital_new) # marital_new 벡터 logical로 강제 형변환
print(marital_logical) #"T", "F"외의 값은 NA로 변경됨
marital_logical[is.na(marital_logical)] = FALSE # NA값을 F로 변환
print(marital_logical)

# result_new 변수에 수정된 데이터 프레임 할당 및 출력
result_new <- data.frame(age, job_new, marital_logical, balance, campaign, y)
print(result_new)

 


👥 파트너간 상보적 학습 및 강의 내용 리뷰

 

오늘은 R에 대한 기초적인 내용을 학습하고 있어서 다들 크게 어려운 부분은 없으셨던 것 같다. 다만 파이썬, SQL등의 언어와 비슷하지만 다른 부분이 많아 헷갈리는 경우가 많다고 하셨다. 나 역시 그렇게 생각했고, 헷갈리지 않게 잘 공부해두어야겠다고 생각했다.

 

 

🙋‍♀️ 질문&답변

 

🤷‍♀️ [Q] class(TRUE)를 입력하면 결과로 "logical" 이 나오는데,

a라는 변수에 TRUE를 할당한 후 ( a <- TRUE )

b <- class(a)를 하면 class(b)가 "character"이 나오고

c <- print(a)를 하면 class(c)가 "logical"이 나옵니다.

위 논리들의 차이가 무엇인지 궁금합니다.

 

💁‍♂️ [A] class(TRUE) 했을 때의 결과인 "logical"의 데이터 타입 character이기 때문에 class(b)의 결과로 character이 나온다.

 

  • 파이썬 기본 3요소: numpy, pandas, matplotlib
  • <- 단축키: alt + -
  • 변수삭제: rm(변수)
  • 전체 변수 삭제: 초기화(list=ls())

 

벡터 만들기 연습

# 1부터 10까지의 숫자로 이루어진 벡터 만들기
c(1,2,3,4,5,6,7,8,9,10)
c(1:10)
seq(1,10)
seq(1,10,1)

# 다음 숫자로 이루어진 벡터 만들기
c(1:3, 50:55)

#1부터 100까지 3간격의 숫자로 이루어진 벡터 만들기
seq(1,100,3)

#0.1부터 1까지 0.1간격의 숫자로 이루어진 벡터 만들기
seq(0.1, 1, 0.1)

#1을 5개 만들기
rep(1,5)

#1,2,3을 5번 반복
rep(c(1,2,3),5)
rep(c(1:3),5)

 

 

벡터 인덱싱/슬라이싱

 

absent <- c(3,2,0,4,1)

absent[1] #월요일 결석
absent[-3] #수요일 빼고

#월화수 데이터만 가져오기기
absent[1:3]

absent[-4:-5]
absent[-c(4,5)]

#불린 인덱싱
#1,3,5번째 요소만 인덱싱
absent[c(T,F,T,F,T)]

#팬시 인덱싱
#1,3,5번째 요소만 인덱싱
absent[c(1,3,5)]

#벡터 absent 각 요소에 이름 붙이기
names(absent) <- c('Mon','Tue','Wed','Thr','Fri')
absent

#이름으로 요소 접근하기
#Mon요소 가져오기
absent['Mon']

#Mon, Wed 요소 가져오기
absent[c('Mon','Wed')]

 

 

✍️ 마무리하며

 

어떤 프로그램을 처음 배울때 프로그램의 사용 방법에 관한 설명없이 코드부터 설명해주는 경우가 많다. 그러다보면 사소한 기능 사용의 어려움을 겪게 되는 경우가 많은데, 이번 R 강의의 경우 기본 사용법부터 유용한 환경설정 세팅까지 차근차근 짚어주셔서 처음만난 R이라는 프로그램을 자세히 알아갈 수 있었다. 문제 풀이도 따로 마련되어 있어서 내가 어느 부분을 헷갈려하지 정확하게 파악할 수 있었다.

 

막상 멘토링시간에 문제를 직접 풀으려니 벡터의 개념이 헷갈렸다. 여러 가지 문제를 풀면서 내가 이해한 바로는는 콜론(:)을 사용할 때는 벡터를 사용하지 않는데 콤마(,)를 사용할 때는 벡터를 사용하는 것 같다.

 

R이 처음이라 코드 하나하나 직접 쳐보며 연습하다보니 강의 듣고 TIL까지 작성하는데 평소보다 더 오래걸렸다..! 하지만 눈으로만 보고 넘기기에는 너무 낯설어서🥲 낯선만큼 시간을 더 써야지 어쩌겠나~ 

 

그리고 R에 코드를 치는데 자꾸 주석이 메아리친다. # 로딩딩 # 형변환환

티스토리는 자꾸 마지막 한글자가 지워진

 

왜이러는걸까.. 하나하나 다시 써주고 지워주기 너무너무 귀찮다.

 


* 유데미 큐레이션 바로가기 : https://bit.ly/3HRWeVL

* STARTERS 취업 부트캠프 공식 블로그 : https://blog.naver.com/udemy-wjtb

📌 본 후기는 유데미-웅진씽크빅 취업 부트캠프 4기 데이터분석/시각화 학습 일지 리뷰로 작성되었습니다.

728x90
Comments