Chapter 03 R 프로그래밍 익히기
03-1 변수와 함수 |
- 변수와 함수
변수 | 함수 |
데이터를 구성하는 원소 값 | 데이터를 조작할 수 있는 프로그래밍 구문 |
변수명 <- 값 | 함수명(인자) |
x, y, ex_am.ple 등 | print(“Hello world!”) |
- 함수의 종류
내장함수 | print(), sum(), Sus.Date(), min(), max() 등 |
사용자 정의 함수 | 함수명 <- function(매개변수1, 매개변수2, . . . ) { 함수가 구현할 내용 . . . return(결괏값) } |
# 사용자 정의함수 생성하기 function1 <- function(x,y,z) { result1 <- x+y*z return(result1) } # 사용자 정의 함수 테스트하기 function1 (2,3,4) [1] 14 |
|
패키지 함수 | - 패키지란? 여러 함수를 기능에 따라 묶어 놓은 것 - 패키지를 설치해야 사용할 수 있는 함수가 있다. |
03-2 패키지 |
- 패키지 설치하기
- 함수 : install.packages(“패키지명”)
- R 스튜디오 packages 탭 : [install] 버튼 -> 검색 후 설치
- 설치한 패키지 확인하기
- 사용가능한(설치된) 모든 패키지 목록 : library()
- 설치한 패키지 로드하기 : library(패키지명)
- 패키지 삭제하기 : remove.packages(“패키지명”)
- 주요 패키지 활용하기
분류 | 기능 | 패키지명 |
로드 | DB 처리 | RMySQL, RPostgress |
엑셀 처리 | XL Connect, xlsx | |
핸들링 | 데이터 조작 | dplyr |
데이터 레이아웃 변환 | reshape2 | |
문자열 처리 | stringr | |
시각화 | 그래프 | ggplot2 |
워드클라우드 | wordcloud | |
구글 차트 | googleVis | |
모델링 | 선형 혼합 효과 모형 | lme4 |
비선형 혼합 효과 모형 | nlme | |
머신러닝 랜덤포레스트 | randomForest | |
범주형 데이터 시각화 | vcd | |
Lassp, elastic-net 회귀분석 | glmnet | |
생존분석 | survival | |
회귀분석 및 분류 모델의 트레이닝 | caret | |
리포트 | 웹 대시보드 | shiny |
공간 | 지리지도 | maps |
Google map | ggmap | |
기타 | 대용량 text 데이터 처리 | data.table |
멀티코어 사용으로 병렬 프로세싱 처리 | parallel | |
XXL 문서 처리 | XML | |
JSON 데이터 처리 | jsonlite | |
HTTP connection | httr |
03-3 조건문과 반복문 |
- 제어흐름 (control flow)
- 프로그래밍에서 함수가 호출되는 순서
- 일반적으로 위에서 아래로 ==> 흐름을 변경하기 위해 사용하는 “조건문” 과 “반복문”
- 조건문 : 조건과 일치할 때 코드를 수행
- 반복문 : 주어진 조건에 맞게 코드를 반복 수행
- 연산자 (Operator)
- 프로그램에서 데이터를 처리하는 연산 기호
이름 | 기호 | 기능 | |
할당 연산자 (assignment operator) |
<- | 우항에 있는 값이 좌항에 할당 | 특정 값을 변수에 저장 함수 인자에 값을 넣을 때 사용할 수 있다 |
산술 연산자 (arithmetic operator) |
+ - * / %/% %% **, ^ |
더하기 빼기 곱하기 나누기 몫 나머지 제곱수 |
숫자를 계산하여 값을 출력 |
관계 연산자 (relational operator) |
> >= < <= == != ! |
크다 크거나 같다 작다 작거나 같다 같다 같지 않다 아니다 |
변수 간의 혹은 변수와 값을 비교하여 관계를 TRUE(참) 또는 FALSE(거짓)의 진릿값으로 알려주는 연산을 수행하는 연산자 |
논리 연산자 (logical operator) |
& | |
그리고 (and) 또는 (or) |
관계 연산자로 얻은 진릿값을 다시 연산할 때 |
- if-else 조건문
- 조건문 : 조건이 TRUE 면 실행되는 코드 구문
if (조건) { 조건이 TRUE(참)일 때 실행되는 구문1 } else { 조건이 FALSE(거짓)일 때 실행되는 구문2 } |
if (조건 1) { 조건1이 TRUE(참)일 때 실행되는 구문1 } else if (조건 2) { 조건1은 FALSE(거짓)이고, 조건 2는 TRUE(참)일 때 실행되는 구문2 } else { 조건 1과 조건 2 모두 FALSE(거짓)일 때 실행되는 구문3 } |
- 반복문
- 반복문 : 정해진 조건만큼 반복 실행하는 구문
- for() 함수
for(변수 in 반복 횟수) { 반복 조건만큼 실행되는 구문 } |
# for() 함수로 구구단 2단부터 9단까지 출력하기 for(i in 2:9) { for(j in 1:9) { print(paste(i, "*", j, "=", i*j)) } } [1] "2 * 1 = 2" [1] "2 * 2 = 4" [1] "2 * 3 = 6" [1] "2 * 4 = 8" [1] "2 * 5 = 10“ ... [1] "9 * 6 = 54" [1] "9 * 7 = 63" [1] "9 * 8 = 72" [1] "9 * 9 = 81" *R studio는 “”를 인식 못함 (굽어진 큰 따옴표) |
# for() 함수로 1부터 100까지의 합 구하기 sum <- 0 for(i in 1:100) { sum <- sum + i } cat(sum) 5050 |
- apply() 함수
apply(x, margin, 함수) | 행렬 연산에 사용 |
x <- 행렬 margin <- 1이면 행, 2이면 열에 함수가 적용 |
|
lapply(x, 함수) | 연산결과를 리스트로 반환 변수를 세로로 나열하여 출력 |
벡터, 행렬, 리스트, 데이터 프레임 등 모든 자료형에 사용가능 | |
sapply(x, 함수) | 연산 결과를 벡터로 반환 변수를 가로로 나열하여 출력 ㅂ |
벡터, 행렬, 리스트, 데이터 프레임 등 모든 데이터 형태에 사용가능 |
# apply() 함수로 iris 데이터 세트 값 처리하기 > apply(iris[, 1:4], 2, sum) Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9 > apply(iris[, 1:4], 2, min) Sepal.Length Sepal.Width Petal.Length Petal.Width 4.3 2.0 1.0 0.1 > apply(iris[, 1:4], 2, max) Sepal.Length Sepal.Width Petal.Length Petal.Width 7.9 4.4 6.9 2.5 > apply(iris[, 1:4], 2, median) Sepal.Length Sepal.Width Petal.Length Petal.Width 5.80 3.00 4.35 1.30 > apply(iris[, 1:4], 2, mean) Sepal.Length Sepal.Width Petal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333 > lapply(iris[, 1:4], sum) $Sepal.Length [1] 876.5 $Sepal.Width [1] 458.6 $Petal.Length [1] 563.7 $Petal.Width [1] 179.9 > sapply(iris[, 1:4], sum) Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9 |
혼공 미션 |
- 기본 미션
- 선택 미션
정리본 PDF |
'프로그래밍 > R 공부' 카테고리의 다른 글
[혼공학습단 10기] 혼자 공부하는 R 데이터 분석 Chapter 05 (2) | 2023.08.03 |
---|---|
(코드 오류와 해결 기록) dcast() : Aggregation function missing: defaulting to length (0) | 2023.07.19 |
[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 04 (8) | 2023.07.12 |
[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 02 (0) | 2023.07.05 |
[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 01 (0) | 2023.07.03 |