R 프로그래밍 입문 완벽가이드 (데이터 분석 기초부터 실무까지)
R이란?
R은 통계 분석과 데이터 시각화 전문 프로그래밍 언어입니다. Python과 함께 데이터 과학 분야의 양대 언어로 꼽힙니다.
R의 특징
- 통계 분석 기능 우수 (SPSS, SAS보다 무료)
- 데이터 시각화 최고 수준
- 방대한 패키지 생태계 (CRAN)
- 학문/통계 분야에서 표준
R vs Python: 데이터 분석가 관점
| 항목 | R | Python |
| 학습곡선 | 가파름 | 완만함 |
| 통계 기능 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 시각화 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 커뮤니티 | 학문/통계 | 개발/AI |
| 취업 | 통계, 바이오 | 전 산업 |
R 프로그래밍 4주 학습 로드맵
1주차: 기초 문법
설치 및 환경 구성:
1. R 다운로드 (CRAN)
2. RStudio 다운로드 (IDE)
3. 기본 패키지 설치기초 문법:
# 변수 할당
x <- 10
y <- 20
# 벡터 (가장 중요한 데이터 타입)
numbers <- c(1, 2, 3, 4, 5)
names <- c("Alice", "Bob", "Charlie")
# 리스트
person <- list(name="John", age=30, city="Seoul")
# 데이터프레임 (표 형태)
df <- data.frame(
name = c("A", "B", "C"),
age = c(25, 30, 35),
salary = c(3000, 4000, 5000)
)2주차: 데이터 조작 (dplyr/tidyverse)
tidyverse 소개: tidyverse는 R의 가장 강력한 패키지 묶음입니다.
# 설치
install.packages("tidyverse")
library(tidyverse)
# 기본 함수들
# filter: 행 선택
df %>% filter(age > 25)
# select: 열 선택
df %>% select(name, salary)
# mutate: 새 열 생성
df %>% mutate(bonus = salary * 0.1)
# arrange: 정렬
df %>% arrange(desc(salary))
# summarize: 집계
df %>% summarize(avg_salary = mean(salary))
# group_by: 그룹화
df %>%
group_by(department) %>%
summarize(avg_salary = mean(salary))3주차: 데이터 시각화 (ggplot2)
ggplot2의 문법:
library(ggplot2)
# 기본 구조
ggplot(data = df, aes(x = age, y = salary)) +
geom_point() +
geom_smooth(method = "lm") +
labs(title = "Age vs Salary",
x = "Age", y = "Salary") +
theme_minimal()다양한 차트:
# 히스토그램
ggplot(df, aes(x = salary)) +
geom_histogram(bins = 10)
# 박스 플롯
ggplot(df, aes(x = department, y = salary)) +
geom_boxplot()
# 바 차트
ggplot(df, aes(x = name, y = salary)) +
geom_col()
# 선 그래프
ggplot(df, aes(x = month, y = sales, color = department)) +
geom_line() +
geom_point()4주차: 통계 분석 및 실무 프로젝트
기초 통계:
# 기술 통계
mean(df$salary) # 평균
median(df$salary) # 중앙값
sd(df$salary) # 표준편차
cor(df$age, df$salary) # 상관계수
# t-검정
t.test(group1, group2)
# 회귀분석
model <- lm(salary ~ age + experience, data = df)
summary(model)
# 시각화
plot(model)---
R 핵심 패키지 10개
| 패키지 | 용도 | 주요 함수 |
| tidyverse | 데이터 정리 | filter, select, mutate |
| ggplot2 | 시각화 | ggplot, geom_* |
| readr | 파일 읽기 | read_csv, write_csv |
| dplyr | 데이터 조작 | group_by, summarize |
| stringr | 문자 처리 | str_replace, str_detect |
| lubridate | 날짜 처리 | ymd, month, year |
| caret | 머신러닝 | train, predict |
| shiny | 웹앱 개발 | shinyApp, reactive |
| rmarkdown | 보고서 작성 | render, knit |
| rvest | 웹 크롤링 | read_html, html_text |
R 실무 프로젝트 예제
프로젝트: 판매 데이터 분석
# 1. 데이터 로드
sales <- read_csv("sales_data.csv")
# 2. 기본 탐색
head(sales)
summary(sales)
glimpse(sales)
# 3. 데이터 정리
sales_clean <- sales %>%
mutate(date = as.Date(date)) %>%
filter(!is.na(amount)) %>%
arrange(date)
# 4. 분석
sales_summary <- sales_clean %>%
group_by(month = floor_date(date, "month")) %>%
summarize(
total_sales = sum(amount),
avg_sales = mean(amount),
n_transactions = n()
)
# 5. 시각화
ggplot(sales_summary, aes(x = month, y = total_sales)) +
geom_col(fill = "steelblue") +
geom_line(aes(y = avg_sales * 100), color = "red") +
labs(title = "Monthly Sales Trend",
x = "Month", y = "Total Sales (KRW)")
# 6. 통계 분석
cor_matrix <- cor(sales_clean %>% select(amount, quantity, price))
heatmap(cor_matrix)---
R 자주 묻는 질문 (FAQ)
Q1. Python과 R 중 어느 것을 먼저 배워야 하나요?
- 통계/학문 목표: R 추천
- AI/머신러닝: Python 추천
- 둘 다 필요: Python → R 순서 추천
Q2. R은 취업 시장에서 인정도가 있나요?
네, 특히:- 통계청, 금융감독청 등 공공기관
- 제약회사, 바이오 회사
- 대학원 진학
- 연구 기관
Q3. R과 SPSS의 차이는?
- SPSS: 클릭으로 분석 (비개발자 용이)
- R: 코드 작성 (개발자 친화적, 무료)
- 미래: R이 더 나음
Q4. R에서 머신러닝을 할 수 있나요?
네, caret, mlr3, tidymodels 패키지 사용:# 간단한 머신러닝
library(caret)
model <- train(salary ~ age + experience,
data = df,
method = "lm")
predictions <- predict(model, newdata = new_data)Q5. R 커뮤니티에서 도움 받을 수 있나요?
네, 활발합니다:- RStudio Community: 질문 답변
- Stack Overflow (r 태그): 코드 질문
- Reddit r/statistics: 통계 토론
R 학습 자료
추천 책
온라인 강의
실습 플랫폼
---
R 최종 팁
효율적 학습법
오류 해결 팁
# 오류가 발생했을 때
?함수명 # 도움말 보기
help.search("주제") # 검색
browseVignettes() # 패키지 튜토리얼
# 일반적 오류
Error in ... : object not found → 변수명 확인
Error in ... : could not find function → 패키지 설치 필요---
결론
R은 데이터 분석 최고의 언어입니다.
- 1주차: 기초 (변수, 벡터)
- 2주차: 데이터 조작 (tidyverse)
- 3주차: 시각화 (ggplot2)
- 4주차: 통계 + 프로젝트
---
관련 콘텐츠: 교육 가이드