홍동이의 성장일기

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

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

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

홍동2 2023. 2. 22. 15:11

목차

 

[173차시]R 연산자와 함수

[174차시]조건문

[175차시]반복문

[176차시]사용자 정의 함수

[177차시]데이터 가져오기와 내보내기

[178차시]데이터 확인, 조작

[179차시]데이터 그리기

[180차시]데이터 조작 기본 실습

[181차시]dplyr패키지 설치와 파이프 연산자

[182차시]dplyr 주요 함수 이해

[183차시]테이블 조작 실습

[184차시]dplyr 패키지 정리 및 실습

 


[173차시]R 연산자와 함수

연산자란?
  • 연산: 프로그램에서 데이터를 처리하여 결과를 산출하는 과정
  • 연산자: 연산을 수행하기 위해 사용되는 문자
  • 피연산자
    • 연산을 당하는 대상
    • R에서는 객체에 해당

 

산술 연산자

: 프로그램이 산술적인 연산을하도록 하는 연산자

  • 산술 연산자 종류

 

비교 연산자

: 두 데이터 사이의 크기 비교를 수행하는 연산자

→ 결과는 논리형으로 리턴됨

  • 비교 연산자 종류

 

논리 연산자

: 값 또는 자료구조 객체에 적용되는 논리기능 수행하는 연산자

→ 결과는 논리형으로 리턴됨

  • 논리 연산자 종류

 

산술 함수

Min 함수: 입력 벡터 중 최소값 출력

Max 함수: 입력 벡터 중 최대값 출력

Sum 함수: 입력 벡터 중 총합 출력

Prod 함수: 입력 벡터 중 곱셈 값 출력

Factorial 함수: 1부터 입력값까지의 팩토리얼 값 출력

Abs 함수: 입력 벡터 중 총합 출력

prod(c(1, 2, 3, 4, 5)) #120

factorial( 4 ) #4! = 24
factorial( c(1 2 -3 4) ) # 1 2 NaN 24

abs(-3) # 3
abs( c(1, -2, 3, -4, 5)) #1 2 3 4 5

Mean 함수: 입력 벡터의 평균 값 출력

Median 함수: 입력 벡터의 중간 값 출력

Range 함수: 입력 벡터의 최소값 최대값 출력

range( c(1, 2, 3, 4, 5)) #1 5
range( c(10, 2, 4, 4, 77)) #2 77

Var 함수: 입력 벡터의 평균에 대한 분산값 출력

Sd 함수: 입력 벡터의 평균에 대한 표준편차값 출력

 

문자열 관련 함수

Paste 함수: 값들을 하나의 문자열로 합치는 함수

Rep 함수 rep(data, n): data로 초기화되는 길이가 n인 벡터 생성

paste(‘안녕’, ‘하세’, ‘요’) # ‘안녕 하세 요’
paste(‘안녕’, ‘하세’, ‘요’, sep=“”) # ‘안녕하세요’
paste(‘안녕’, ‘하세’, ‘요’, sep=“/”) # ‘안녕/하세/요’
paste(c(1, 2, 3)) # c(‘1', ‘2', ‘3') , 벡터 값들을 개별로 인식
paste(c(1,2,3), c(‘번’, ‘번’, ‘번’)) # c(‘1 번‘, ‘2 번’, ‘3 번’)

rep(1, 5) # c(1, 1, 1, 1, 1)
rep(‘a’, 5) # c(‘a’, ‘a’, ‘a’, ‘a’, ‘a’)

index <- c(1,2,3)
len <- length(index) # index 벡터의 크기 리턴
paste( index, rep(‘번’, len) ) # c(‘1 번‘, ‘2 번’, ‘3 번’)

 

실습

# Q.1 운항/탑승객/화물 별 ‘총 실적’ 및 ‘평균 실적‘을 구하세요.
#데이터 입력
airline <- c('아시아나항공', '에어부산', '에어프레미아', '에어서울', '제주항공', '진에어', '대한항공', '티웨이항공')
flight <- c(1575, 481, 124, 354, 1197, 793, 1670, 859)
passenger <- c(249792, 90985, 29238, 71213, 203335, 133253, 250895, 146497)
freight <- c(3097.9, 516.7, 111.1, 273.1, 847.1, 763.2, 5406.1, 597.6)

#계산 및 출력
total <- c(sum(flight), sum(passenger), sum(freight))
average <- total / length(flight) # length(): 입력된 매개변수의 크기 리턴
print(total)
print(average)

 

#Q.2 운항이 평균 실적보다 높은 항공사들을 벡터 형태로 출력하세요.
#계산 및 출력
upperAvg_flight <- flight > mean(flight) #평균 운항 실적과 항공사별 운항실적 비교
print(upperAvg_flight) # c(TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE)
result <- airline[upperAvg_flight] # airline 벡터 중 TRUE에 해당하는 index 값만 남김
print(result) # c(‘아시아나항공’, ‘제주항공’, ‘대한항공’)


[174차시]조건문

조건문이란?
  • 지정한 조건에 해당할 때, 코드를 수행하는 구문
  • 조건문 안에 들어가는 값은 반드시 논리값임

 

if ~ else문
  • 문법

  • 다중 조건식 사용 가능: Else if 구문 사용

scan(): 사용자로부터 데이터 입력 받는 함수. 값 입력없이 엔터 누를 시, 입력 종료

 

ifelse문 (삼항연산자)
  • 문법

  • 특징
    • 벡터 연산 가능
    • 간단한 조건문에 한하여 가독성 목적으로 사용
    • 실행문이 복잡한 경우에 적합하지 않음
    • 다중 조건식에 부적합

 

switch문
  • 문법
    • 입력값과 비교값이 같다면 해당하는 실행문 실행
      if(입력값 == 비교값){실행문}
    • 기본 실행문은 입력값과 같은 비교값이 없을 때 실행

  • 특징
    • 비교값은 문자열 형식만 가능
    • 범주형 데이터 처리해야하는 경우 효율적

 

which문
  • 문법
    • 조건에 해당하는 입력 벡터 내부 값의 인덱스(위치) 출력

  • 특징
    • 조건에 따른 실행문 실행 기능 없음

[175차시]반복문

반복문이란?
  • 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문
  • 조건문과 더불어 가장 많이 사용되는 제어문
  • 대부분 조건문과 함께 사용됨

 

For문
  • 문법
    • 데이터에 존재하는 값이 순서대로 변수에 할당되어 명령문 실행
    • 데이터의 마지막 값까지 반복

 

While문
  • 문법
    • 조건식이 FALSE라면 반복 종료
    • 산술값 계산 or 위치(index)값을 사용할 때 주로 사용

break: 반복문 안에서 사용시 강제로 반복 종료

 

Repeat문
  • 문법
    • 가장 간단한 반복문 구조
    • 잘 사용하지 않음

 

벡터 다루기
  • 위치(index)값 사용하여 벡터 내부값 참조/할당 가능
    • 위치값은 1부터 시작
    • 문법: 벡터명[위치값]

  • 특징
    • 다중위치 참조 가능
      - logic 벡터 값이 TRUE인 index 값만 리턴
      - num 벡터 값에 해당하는 index 값만 리턴
    • 음수 위치값 사용 가능
      : 해당 자릿수 값만 빼고 리턴

[176차시]사용자 정의 함수

사용자 정의 함수

: 사용자가 직접 정의하여 만들어내는 함수

  • 문법
    • 매개변수1: 초기화가 되지 않았기 때문에 필수 매개변수
    • 매개변수2: 초기화되었기 때문에 선택적 매개변수 

  • 벡터에 index별 이름 설정 가능
    • c(이름1=값, 이름2=값, ...)
    • 이름에 적힌 값은 문자열로 자동 형변환되어 취급

Sys.Date(): 시스템 상 오늘의 날짜를 리턴하는 함수. "yyyy-mm-dd" 형

 difftime: Date간 차이에 해당하는 일수 리턴

 

  • 특징
    • 매개변수, 함수 내부변수 우선순위: 함수 내부변수 우선
    • 함수 안에서 사용한 변수 밖에서 사용 불가능
    • 함수 안 함수 선언 가능
      단, 동일한 매개변수명 사용 불가
    • 함수를 리턴 가능
      : 함수를 생산하는 함수

 

파일에 함수 저장하기
  • 별도 파일에 함수 저장
    • 일반적으로 사용자 정의 함수 사용하는 방법
    • 패키지와 유사
    • 함수 외 변수, 데이터셋 저장가능
  • 파일 저장 방법
    1. 새 r스크립트 생성
    2. 함수 작성
    3. r스크립트 working directory에 저장: getwd()
  • 파일 불러오기
    1. 새로운 r스크립트 생성
    2. source 함수 사용하여 파일 불러오기: source()
    3. 파일 내부에 저장된 함수 사용

[177차시]데이터 가져오기와 내보내기

데이터 형식

"컴퓨터가 사용할 수 있는 데이터는 어떤 형식으로 존재할까?"

  • 키보드 입력
    • 키보드로 사용자에게 데이터를 직접 입력 받음
    • scan()
  • 로컬 파일
    • 로컬 컴퓨터에 저장된 파일
    • 인터넷 연결 유무 상관없이 사용
  • 인터넷 파일
    • 인터넷에 업로드 되어있는 파일
    • 다운로드 필요

 

데이터 가져오기
키보드 입력
  • scan()
    : numeric 형식 값만 입력 가능
  • scan(what = character())
    : character 형식 값 입력 가능 (logical도 가능)

 

로컬 파일

: 데이터 파일에 자주 사용되는 확장자

  • .txt
    • 데이터들을 구분자로 분리하여 저장
    • 구분자가 여러 개거나, 없는 경우도 존재
  • .csv (Comma Separated Values)
    • 구분자가 콤마(,)인 데이터 파일
  • .xlsx
    • 엑셀 파일
  • 웹 관련 확장자: xml, json, html 등

 

read.table: 테이블(행렬) 형식 파일로부터 데이터 불러오는 함수

  • 문법
    • header: 데이터 첫 행에 열 변수명이 있다면 TRUE(default), 없다면 FALSE
    • sep: 구분자 지정가능
    • col.names
      - 열 변수명 임의 설정가능
      - header가 True라면 굳이 할 필요없음
    • na.string: 결측치를 의미하는 문자가 어떤 것인지 지정

 

read.csv: csv 형식 파일로부터 데이터 불러오는 함수

  • 문법
    • read.table과 구조는 같지만 csv는 sep가 콤마(,)로 고정되어있기 때문에 sep에 대한 매개변수가 없다. 

 

read.excel: xlsl, xls 형식 엑셀 파일로부터 데이터 불러오는 readxl 패키지 함수

→ readxl 패키지 인스톨 및 로드 필요

#패캐지 설치 및 로딩
install.packages("readxl")
library(readxl)
  • 문법
    • sheet
      - sheet가 여러 개인 경우, sheet명 지정
      - 지정하지 않으면 첫번째 sheet 데이터 불러옴
    • range: 데이터 불러올 범위 지정 가능
      - cell_rows: 행 모두 리턴
      - R0C0:R0C0 (R: Rows, C: Columns)

    • col_names: read.table의 header와 기능 동일
    • col_types: read.table의 col.names와 기능 동일
    • na: read.table의 na.string와 기능 동일

 

인터넷 파일

: 인터넷에 존재하는 데이터 파일 로딩

  • 데이터 주소(url)를 기존 파일 로딩함수 매개변수에 삽입
    • read.table, read.csv 함수는 url 통한 로딩 제공
    • readxl 패키지의 read_xlsx는 url 통한 로딩 제공하지 않음

 

데이터 내보내기

write.table

  • 문법 
    • row.name: 행 번호 붙힐지 말지 선택
    • quote: character 형식 데이터에 쌍따옴표(") 붙힐지 말지 선택

 

write.csv

: sep에 대한 매개변수가 없다는 것 외에는 write.table과 동일함

 

write.excel

: "writexl" 패키지 설치 필요

  • 문법


[178차시]데이터 확인, 조작

데이터 확인

기본 확인 함수

  • 데이터셋 선정

  • dim 함수: 데이터의 차원 확인
  • length 함수: 데이터가 가진 마지막 차원의 수를 보여줌
    ※ 데이터 프레임에서 '$' 표시를 사용하여 특정 열 컬럼만 추출할 수 있다
  • head 함수: 앞쪽 6개 데이터만 출력
  • tail 함수: 쪽 6개 데이터만 출력
  • str 함수
    • class, 크기, 미리보기 값 제공
    • factor: 범주형 데이터임을 의미하는 문자열 벡터
  • names 함수: 데이터의 헤더 이름 출력
  • View 함수: RStudio 뷰어 창에서 데이터 확인
    ※ V는 반드시 대문자로 써야함

 

행/열 추출

  • 데이터 특정 행/열만 추출 (행, 열)
    • data.frame[c(1,2), ] : 데이터 프레임의 '1,2행/ 모든 열' 만 추출
    • data.frame[, c(1,2)] : 데이터 프레임의 ‘모든 행/ 1,2 열’ 만 추출
    • data.frame[c(1,2), c(1,2)] : 데이터 프레임의 ‘1,2 행/ 1,2 열' 만 추출
  • 데이터 특정 행/열만 제거
    • data.frame[c(-1,-2), ] : 데이터 프레임의 1,2행 제거
    • data.frame[, c(-2)] : 데이터 프레임의 2열 제거
    • data.frame[c(-1,-2), c(-1,-2)] : 데이터 프레임의 ‘1,2 행/ 1,2 열’ 제거

 

데이터 분석

기본 분석

  • mean, var, sd (평균, 분산, 표준편차)
  • table 함수
    • 벡터 내에서 데이터 값이 각각 몇 회 등장하였는지 체크
    • 범주형 데이터 분석에 적합
  • median, range(min, max)
  • quantile (사분위수)

[179차시]데이터 그리기

데이터 그리기

plot() 함수: 산점도, 그래프 그리기

  • 문법
    • x, y: 데이터의 x, y축 값
    • type: 그래프 타입 (p: 점, l: 선, b: 점&선 등)
    • main: 그래프 제목
    • x/ylab: x/y축 이름
    • x/ylim: x/y축 값 범위
    • pch: 점의 모양 (숫자 1~25, 문자: "*", "%", "#" 등)

 

다중 그래프 그리기

  • 방법
    • plot() 함수 사용하여 1개 그래프 그린 후, lines() 함수 사용하여 추가 그래프 그림
    • plot을 통해 그림을 그리고 lines를 통해 plot 위에 추가로 그림을 덧칠하는 개념

※ col: 그래프 선 색 지정 매개변수

 

범례 그리기

  • 그래프의 라벨을 알려주는 값
    legend(위치값, legend = 라벨값, fill = 색상값)
    • 위치값 (9가지): topright/left, top, bottom, bottomleft/right, center, left, right

 

파이 차트

pie() 함수 (원형 차트): 비율을 표현하여 범주형 데이터 시각화에 적합

  • label: 요소별 이름 등록
  • init.angel: 기준선 각도
  • radius: 원의 크기 조절

※ table 객체 삽입 시, label이 자체적으로 붙음

 

히스토그램

hist() 함수: 수치형 데이터를 범주화하여 표현하는데 적합

  • 문법
    • breaks: 범주 개수
    • frep: 결과 출력값 기준 (T = 횟수(count), F = 비율(density))

 

상자그림

boxplot() 함수: 수치형 데이터의 분포를 시각화하는데 적합

  • 상자그림이란?
    • 5가지 통계수치를 표현: 최대값, 1/2/3사분위값, 최소값
    • 이상치표현: 최대값보다 매우 크거나, 최소값보다 매우 작은값 

  • 문법
    • boxwex: 상자의 넓이

※ 다중상자그림: data.frame 형식 데이터 사용할 시, 컬럼별 boxplot 그려짐


[180차시]데이터 조작 기본 실습

#데이터 로딩

#C열에 항공명, L열에 화물 실적 데이터 존재
data <- read_excel("airport.xlsx", col_names = FALSE, range="R80C3:R85C12") # 80행 C열부터 85행 L열까지의 데이터 로딩
head(data)

#데이터에서 '항공사별 화물 실적'데이터를 추출
airportName <- data$...1  # 항공명
freight <- as.numeric(data$...10) # 화물 실적

# 추출한 데이터를 파이차트로 그림. (단, 항공사명, 비율 라벨 추가해야 함)
freight_percent<- freight / sum(freight) * 100
freight_percent <- round(freight_percent, digit=1) #round: 반올림 함수, 소숫점 1째자리에서 반올림
label_data <- paste(airportName, "(", freight_percent,"%", ")")
label_data
pie(freight, label=label_data, radius=1)

#데이터로딩
data <- read.csv("covid19.csv", header=F, skip=35, nrows=30) #header는 없으며, 앞의 35줄을 skip하고 그 다음부터 30줄을 로딩
dim(data)
data <- data[30:1,] #데이터 위아래 뒤집기(reverse)

#9월 한달간 '당일 1차 접종자', '당일 2차 접종자‘ 데이터를 추출
#9월 한달간 '1차 접종률', '2차 접종률' 데이터를 추출

first_vaccine <- data$V3  #일일 1차 접종자 데이터 추출
second_vaccine <- data$V6 #일일 1차 접종자 데이터 추출
first_rate <- data$V5     # 1차 접종률 데이터 추출
second_rate <- data$V8     # 1차 접종률 데이터 추출

#화면분할 출력
par(mfrow = c(2,1))
plot(first_vaccine, type='o', col='red', pch=19, xlab="day", ylab="count", main="코로나 일일 백신 접종 수")
lines(second_vaccine, type='o', col='blue', pch=19)
legend("bottomright", legend=c('first', 'second'), fill=c("red", "blue"))

plot(first_rate, type='o', col='red', pch=19, xlab="day", ylab="rate(%)", ylim=c(20,80), main="총 백신 접종률 (%)")
lines(second_rate, type='o', col='blue', pch=19)
legend("bottomright", legend=c('first', 'second'), fill=c("red", "blue"))

#Q3

data <- read.csv('TravelMode.csv')
head(data)
dim(data)   # (840 10)
choice <- data$choice
choice_yes_index <- which(choice == "yes")
choice_yes_index
actual_data <- data[choice_yes_index,]  #choice값이 yes인 행과, 그 행들의 모든 열로 이루어진 데이터 프레임
head(actual_data)
processed_data <- actual_data[,c(-1, -2, -4)] # x, individual, choice 칼럼 제거
head(processed_data)
str(processed_data) # 생성한 데이터셋 확인

#boxplot
boxplot_data <- processed_data[,c(-1, -4, -7)] #mode, travel, size 컬럼 제외
boxplot(boxplot_data)

#히스토그램
hist(processed_data$travel)


[181차시]dplyr패키지 설치와 파이프 연산자

dplyr 패키지 소개

왜 중요한가요?

  • 현실의 데이터는 더럽다
  • 전처리에 많은 시간 사용 + 힘듦
    → 비교적 단순한 반복 작업이 많기 때문

  • 전처리를 쉽게해주는 R 패키지
  • 데이터 전처리 시, 반복작업을 줄여줌
  • 처리속도 빠름
    • C++ 기반
    • 이전 버전인 plyr은 R 기반 패키지 → 느림
  • 파이프 연산자 제공
    • 가독성
    • 메모리 효율성

 

설치

 

파이프 연산자 (체인 연산자)

  • 문법
    • 형태: %>%
    • 의미: 왼쪽 변수를 오른쪽 함수에 적용
      - f(x) 구조를 x %>% f 구조로 사용
      - 왼쪽 변수는 오른쪽 함수의 첫번째 파라미터로 적용
    • dplyr 패키지에서 제공하는 연산자
  • 값 조작을 위해 사용하는 함수가 많을수록 가독성 측면에서 장점
    • 전처리 과정이 복잡할수록 코드 작성 및 이해가 편함
  • 단축키: Ctrl + Shift + M

 

dplyr 함수 소개

rename 함수

: 데이터프레임에서 특정 컬럼의 이름 변경

  • 문법

 

arrange 함수

: 데이터프레임에서 특정 컬럼 값을 기준으로 데이터 정렬

  • 문법

 

distinct 함수

: 데이터프레임에서 특정 컬럼의 중복값제거 

  • 문법


[182차시]dplyr 주요 함수 이해

dplyr 주요 함수 소개

select 함수

: 데이터 프레임에서 원하는 컬럼만 추출

  • 문법

 

filter 함수

: 데이터 프레임에서 조건에 충족되는 행만 추출

  • 문법
    • & (and), | (or)을 사용하여 여러 행 추출 가능

 

mutate 함수

: 기존 컬럼값을 사용하여 새로운 컬럼을 생성

  • 문법

 

group_by 함수

: 특정 컬럼 값이 같은 데이터들을 같은 집단으로 묶어줌

  • 문법

  • 특징
    • group_by만으로는 외관상 달라지는게 없음
    • grouped_df 형식으로 변경됨: group 관련 정보 추가

 

summarize 함수

: 그룹 단위 동일기능 수행 후, 새로운 데이터 프레임에 수행 결과 통합

  • 문법


[183차시]테이블 조작 실습

데이터셋 소개: gapminder

: 국가별 경제 수준과 의료 수준 동향을 정리한 데이터셋

  • 경제적 수준: 일인당 GDP
  • 의료 수준: 평균 기대수명

 

※ pull(): tibble 자료형을 벡터 또는 데이터 프레임 자료형으로 형변환하는 함수

※ count(data, 컬럼명, sort=F): data에서 해당 컬럼명의 요소별 개수 리턴 

 

#Q1. group_by, summarize 함수를 사용하여 대륙별 평균 GDP 테이블을 생성하세요.
#대륙별 평균 GDP 계산
gdp_bycontinents <- gapminder %>% group_by(continent) %>% summarize(mean_gdpPercap=mean(gdpPercap))

#Q2. 아메리카대륙에 대한 데이터 프레임을 구하고, 총 몇 개의 행이 있는지 확인하세요.
America <- gapminder %>% filter(continent == "Americas")
America %>% nrow() #300

#Q3. 아메리카대륙 인구가 3천만 이상인 데이터 프레임을 구하고, 해당 데이터 프레임의 ‘country’ 컬럼 별 행 개수를 구하세요.'
America %>% filter(pop >= 30000000) %>% count(country, sort=T)

#Q4. Q3에서 확인한 결과, 아메리카대륙 중 55년 내내 인구 3천만명이상인 나라는 3곳입니다. Brazil, Mexico, United States의 년도 별 인구수를 한 그래프에 나타내세요.
#min, max 값 계산
min <- gapminder %>% filter(country == "Brazil" | country == "Mexico" | country == "United States") %>% 
select(pop) %>% min()
max <- gapminder %>% filter(country == "Brazil" | country == "Mexico" | country == "United States") %>% 
select(pop) %>% max()

#그래프 그리기
gapminder %>% filter(country == "Brazil") %>% select(year, pop) %>% plot(type='o', col="red", ylim=c(min,max))
gapminder %>% filter(country == "Mexico") %>% select(year, pop) %>% lines(type='o', col="blue")
gapminder %>% filter(country == "United States") %>% select(year, pop) %>% lines(type='o', col="green")

#범례 그리기
legend("topleft",legend=c("Brazil", "Mexico", "United States"), fill=c("red", "blue","green"))


[184차시]dplyr 패키지 정리 및 실습

QUIZ
  1. 다음 중 dplyr의 장점이 아닌 것은? (4)
    1️⃣ 데이터 전처리를 보다 쉽게 할 수 있도록 도와준다.
    2️⃣ C++ 기반 패키지이며, 처리속도가 빠르다.
    3️⃣ 가독성 향상에 도움을 주는 파이프 연산자를 제공한다.
    4️⃣ 다양한 시각화 툴을 제공한다.
  2. dplyr 함수인 distinct는 데이터 프레임에서 특정 컬럼의 중복 값 을 제거하는 기능을 가진다.
  3. dplyr 함수인 select는 데이터 프레임에서 원하는 컬럼만 추출할 수 있게하는 기능을 가진다.
  4. dplyr 함수인 mutate는 기존에 있는 데이터를 사용하여 새롭게 열 컬럼을 생성하는 기능을 가진다.
  5. dplyr 함수 중 summary 함수는 그룹 단위 통일기능 수행 후, 새로운 데이터프레임에 수행 결과를 통합하는 기능을 가진다.

 

실습
library(dplyr)

#Q1
data <- read.csv('TravelMode.csv')
head(data)
dim(data)   # (840 10)

#Q2
avg_table <- data %>% group_by(mode) %>% summarize(gcostAgv=mean(gcost))
avg_table

#Q3
avg_table <- avg_table %>% as.data.frame()
label <- paste(avg_table$mode, "(", round(avg_table$gcostAgv / sum(avg_table$gcostAgv) *100,1), "% )" )
pie(avg_table$gcostAgv,labels = label)


✍️ 마무리하며

아직 R에 대해 완벽하게는 모르지만 확실히 파이썬보다 간단하게 원하는 자료를 뽑아낼 수 있는 경우가 있는 것 같다. 특히 파이프 연산자가 가장 직관적으로 편리하게 다가왔다.

 

여러가지 프로그램들을 공부하면서 느끼는 점은 모든 프로그램들이 알게 모르게 비슷한 사고를 요한다는 것이다! (데이터 분석에 집중해서 공부하고 있기 때문에 더 그런걸지는 몰라도) 파이썬을 처음 공부할 때는 정말 쇠귀에 경읽기에서 소를 담당하는 나였지만 이제는 어느정도 흐름은 잡은채로 공부하고 있는 것 같다! 물론 한번듣고 모든 내용을 기억할 수는 없지만 꼼꼼히 복습해서 확실하게 내 지식으로 만들고 싶다💪


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

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

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

728x90
Comments