교재 전체를 함께 달렸습니다. 복잡했던 개념도 있고, 생각보다 쉬웠던 부분도 있었을 겁니다. 이 챕터는 PART 1부터 PART 6까지 배운 핵심 함수와 개념을 한 곳에 모아두는 치트시트입니다. 실전에서 막힐 때 이 표를 먼저 펼쳐보세요.
| 함수 / 문법 |
설명 |
예시 |
<- |
변수 할당 |
x <- 10 |
c() |
벡터 생성 |
c(1, 2, 3) |
length() |
벡터 길이 |
length(x) |
class() |
자료형 확인 |
class(x) |
is.na() |
결측치 여부 |
is.na(x) |
which() |
조건 만족 인덱스 |
which(x > 5) |
seq() |
등차 수열 |
seq(1, 10, by = 2) |
rep() |
반복 벡터 |
rep(0, times = 5) |
data.frame() |
데이터프레임 생성 |
data.frame(a = 1:3, b = c("x","y","z")) |
str() |
구조 확인 |
str(df) |
summary() |
기술 통계량 |
summary(df) |
nrow() / ncol() |
행/열 수 |
nrow(df) |
function() |
함수 정의 |
f <- function(x) x^2 |
for / while |
반복문 |
for (i in 1:10) { ... } |
if / else |
조건문 |
if (x > 0) "양수" else "음수" |
apply() |
행렬 방향 적용 |
apply(m, 1, sum) |
sapply() |
리스트 반환 단순화 |
sapply(lst, mean) |
| 함수 |
설명 |
예시 |
filter() |
행 필터링 |
filter(df, age > 20) |
select() |
열 선택 |
select(df, name, age) |
mutate() |
열 추가/변환 |
mutate(df, bmi = weight / height^2) |
arrange() |
행 정렬 |
arrange(df, desc(score)) |
summarise() |
집계 |
summarise(df, mean_age = mean(age)) |
group_by() |
그룹화 |
group_by(df, city) |
rename() |
열 이름 변경 |
rename(df, 나이 = age) |
distinct() |
중복 제거 |
distinct(df, city) |
count() |
빈도 집계 |
count(df, city) |
slice_max() |
상위 N행 |
slice_max(df, score, n = 5) |
case_when() |
다중 조건 변환 |
case_when(x > 80 ~ "우", x > 60 ~ "미", TRUE ~ "가") |
across() |
여러 열 동시 변환 |
mutate(across(where(is.numeric), round)) |
| 함수 |
설명 |
예시 |
pivot_longer() |
wide → long |
pivot_longer(df, cols = -id) |
pivot_wider() |
long → wide |
pivot_wider(df, names_from = year) |
separate() |
열 분리 |
separate(df, date, c("y","m","d"), sep = "-") |
unite() |
열 합치기 |
unite(df, full_name, first, last, sep = " ") |
drop_na() |
결측치 행 제거 |
drop_na(df, score) |
fill() |
결측치 채우기 |
fill(df, value, .direction = "down") |
| 함수 |
설명 |
예시 |
read_csv() |
CSV 읽기 |
read_csv("data.csv", locale = locale(encoding = "EUC-KR")) |
read_excel() |
Excel 읽기 |
read_excel("data.xlsx", sheet = 1) |
write_csv() |
CSV 저장 |
write_csv(df, "output.csv") |
col_types 인자 |
컬럼 타입 지정 |
read_csv("f.csv", col_types = cols(id = col_character())) |
| geom 함수 |
설명 |
주요 aes |
geom_point() |
산점도 |
x, y, color, size, shape |
geom_line() |
선 그래프 |
x, y, color, linetype, linewidth |
geom_col() |
막대 그래프 (값 지정) |
x, y, fill |
geom_bar() |
막대 그래프 (빈도 자동) |
x, fill |
geom_histogram() |
히스토그램 |
x, bins, fill |
geom_density() |
밀도 곡선 |
x, fill, alpha |
geom_boxplot() |
박스플롯 |
x, y, fill |
geom_violin() |
바이올린 플롯 |
x, y, fill |
geom_tile() |
히트맵 |
x, y, fill |
geom_smooth() |
추세선 |
method = "lm" / "loess" |
geom_hline() |
수평 기준선 |
yintercept |
geom_vline() |
수직 기준선 |
xintercept |
geom_text() |
텍스트 레이블 |
label, hjust, vjust |
geom_ribbon() |
영역 채우기 |
ymin, ymax, fill, alpha |
| 함수 |
설명 |
예시 |
labs() |
제목·축 레이블 |
labs(title = "제목", x = "x축", y = "y축") |
theme_minimal() |
미니멀 테마 |
theme_minimal(base_family = "AppleGothic") |
theme() |
세부 테마 조정 |
theme(legend.position = "bottom") |
facet_wrap() |
소그룹 분할 패널 |
facet_wrap(~category, ncol = 2) |
facet_grid() |
행·열 분할 패널 |
facet_grid(rows ~ cols) |
scale_x_date() |
날짜 축 포맷 |
scale_x_date(date_labels = "%Y-%m") |
scale_y_continuous() |
연속형 y축 포맷 |
scale_y_continuous(labels = comma) |
scale_fill_manual() |
색상 수동 지정 |
scale_fill_manual(values = c(...)) |
coord_flip() |
x·y 축 교환 |
coord_flip() |
ggsave() |
그래프 저장 |
ggsave("plot.png", width = 8, height = 5) |
| 작업 |
함수·패턴 |
예시 |
| 한글 인코딩 읽기 |
locale(encoding = "EUC-KR") |
read_csv("f.csv", locale = locale(encoding = "EUC-KR")) |
| 날짜 파싱 |
ymd(), parse_date_time() |
ymd("20240101") |
| 문자열 정제 |
str_trim(), str_remove() |
str_trim(df$name) |
| 숫자형 변환 |
parse_number() |
parse_number("1,234원") |
| 결측치 확인 |
sum(is.na(x)) |
colSums(is.na(df)) |
| 이상치 탐지 |
사분위수 규칙 |
Q1 - 1.5 * IQR ~ Q3 + 1.5 * IQR |
| R Markdown 렌더링 |
rmarkdown::render() |
rmarkdown::render("report.Rmd") |
| 함수 / 패키지 |
설명 |
예시 |
tq_get() |
주가 데이터 수집 |
tq_get("AAPL", get = "stock.prices") |
getSymbols() |
xts 형식으로 수집 |
getSymbols("AAPL", src = "yahoo") |
tq_transmute() |
수익률 변환 |
tq_transmute(select = adjusted, mutate_fun = periodReturn) |
tq_mutate() |
기술 지표 추가 |
tq_mutate(select = adjusted, mutate_fun = SMA, n = 20) |
SMA() |
단순이동평균 |
SMA(price, n = 20) |
EMA() |
지수이동평균 |
EMA(price, n = 12) |
RSI() |
상대강도지수 |
RSI(price, n = 14) |
MACD() |
MACD 지표 |
MACD(price, nFast = 12, nSlow = 26, nSig = 9) |
rollapply() |
롤링 통계 |
rollapply(x, width = 30, FUN = sd) |
cumprod() |
누적 곱 (누적 수익률) |
cumprod(1 + daily_return) - 1 |
cor() |
상관계수 행렬 |
cor(returns_wide) |
corrplot() |
상관계수 히트맵 |
corrplot(cor_matrix, method = "color") |
patchwork / |
차트 세로 결합 |
p1 / p2 |
patchwork ` |
` |
차트 가로 결합 |
R 4.1부터 네이티브 파이프 |>가 도입되었습니다. 이 교재는 네이티브 파이프를 사용했지만, 기존 magrittr 파이프 %>%도 동일하게 동작합니다.
| 연산자 |
패키지 |
특징 |
| ` |
>` |
R 기본 (4.1+) |
%>% |
magrittr / tidyverse |
R 4.0 이하 환경에서 사용 |
| 패키지 |
주요 역할 |
로드 방법 |
tidyverse |
데이터 조작·시각화 묶음 |
library(tidyverse) |
dplyr |
데이터프레임 조작 |
tidyverse 포함 |
ggplot2 |
시각화 |
tidyverse 포함 |
readr |
CSV 읽기 |
tidyverse 포함 |
tidyr |
데이터 형태 변환 |
tidyverse 포함 |
lubridate |
날짜 처리 |
library(lubridate) |
stringr |
문자열 처리 |
tidyverse 포함 |
readxl |
Excel 읽기 |
library(readxl) |
scales |
축 포맷 |
library(scales) |
patchwork |
차트 결합 |
library(patchwork) |
ggrepel |
레이블 겹침 방지 |
library(ggrepel) |
rmarkdown |
리포트 생성 |
library(rmarkdown) |
quantmod |
주가 데이터 수집 |
library(quantmod) |
tidyquant |
금융 분석 tidyverse 스타일 |
library(tidyquant) |
TTR |
기술 지표 계산 |
tidyquant 포함 |
corrplot |
상관계수 시각화 |
library(corrplot) |
zoo |
롤링 통계 |
library(zoo) |
이 치트시트를 벽에 붙여두거나 즐겨찾기에 저장해두면, 실전에서 함수 이름이 생각나지 않을 때 빠르게 찾을 수 있습니다.