R 설치부터 데이터 조작까지: 초보자를 위한 아주 자세한 첫걸음

R 설치·RStudio 세팅·패키지 설치부터 기본 데이터셋으로 데이터 조작을 배우는 완전 초보자용 실습 가이드입니다.
데이터·통계
저자

Ikmyungterran

공개

2026년 2월 1일

0. 이 글의 목표

이 글은 R을 처음 설치하는 단계부터, 기본 데이터셋을 이용한 데이터 조작, NA 처리, across/c_across/pick 같은 실무 함수까지 하나하나 따라할 수 있도록 구성했습니다. 긴 글이지만 순서대로만 따라 하면 실습이 끝나는 구조입니다.

R 로고


1. R이란 무엇인가 (1분 요약)

  • R은 통계 분석과 데이터 처리를 위한 프로그래밍 언어입니다.
  • RStudio는 R을 편하게 쓰게 도와주는 IDE(개발 환경)입니다.

목표는 단순합니다. R(엔진) + RStudio(작업실) + 필수 패키지(도구) 를 설치하고, 기본 데이터셋으로 연습하는 것.


2. R 설치 (Windows / macOS / Linux)

2.1 Windows 설치 (가장 흔한 방법)

R 설치는 CRAN(Comprehensive R Archive Network)에서 받는 것이 표준입니다. 공식 문서는 Windows에서 설치 파일(.exe)을 실행해 설치하는 방식을 안내합니다.

순서

1) CRAN의 Windows 다운로드 페이지에서 R 설치 파일(.exe) 다운로드

2) 설치 파일 실행 → 안내에 따라 설치

3) 설치 후 R 콘솔 또는 RStudio에서 버전 확인

설치 후 버전 확인

version

예시 출력(버전은 설치 환경에 따라 다를 수 있습니다):

               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                    
major          4                           
minor          4.1                         
year           2026                        
month          01                          
day            10                          
language       R                           

2.2 macOS 설치

macOS는 CRAN 페이지에서 설치 파일(.pkg)을 다운로드해 설치합니다. 공식 문서는 Mac에서도 설치 파일을 더블클릭해 설치한다고 설명합니다.

설치 후 확인

version

예시 출력(버전은 설치 환경에 따라 다를 수 있습니다):

               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                    
major          4                           
minor          4.1                         
year           2026                        
month          01                          
day            10                          
language       R                           

2.3 Linux 설치

Linux는 배포판별 설치 방식이 다르지만, CRAN을 통해 최신 버전을 설치하는 것이 일반적입니다. R 공식 문서에서는 CRAN에서 소스 또는 바이너리를 얻을 수 있음을 안내합니다.


3. RStudio 설치

RStudio는 Posit에서 제공하며, Windows/macOS/Linux용 설치 파일을 공식 다운로드 페이지에서 제공합니다.

설치 후 첫 실행 시 확인할 것 - 좌측 상단: 스크립트 에디터 - 좌측 하단: 콘솔 - 우측 상단: Environment (객체 목록) - 우측 하단: Files/Plots/Packages/Help


4. 필수 패키지 설치 (tidyverse, readxl, janitor)

4.1 설치 코드

install.packages("tidyverse")
install.packages("readxl")
install.packages("janitor")

4.2 로드 코드

library(tidyverse)
library(readxl)
library(janitor)

: 한 번 설치하면 이후에는 library()로 불러오기만 하면 됩니다.


4-1. 실무 설치 팁 — Rtools, 환경변수, 패키지 경로 (Windows 필수)

윈도우 환경에서는 컴파일 도구(Rtools)환경변수(PATH) 문제가 가장 자주 발생합니다. 아래 순서를 그대로 따라 하면 대부분의 설치 이슈를 예방할 수 있습니다.

체크리스트 (Windows 기준)

  1. R Base 다운로드: https://cran.r-project.org/bin/windows/base/ 접속 → 최신 설치 파일 다운로드
  2. R 설치 완료 확인: 설치 후 R 또는 RStudio에서 버전 확인
  3. Rtools 4.5 다운로드: https://cran.r-project.org/bin/windows/Rtools/ 접속 → Rtools 4.5 설치 파일 선택
  4. RStudio 다운로드: https://posit.co/downloads/ 접속 → RStudio Desktop 설치 파일 선택
  5. Rtools 4.5 설치 (예: C:\rtools45) — 이 경로를 환경변수에 그대로 사용
  6. 시스템 환경변수에 RTOOLS45_HOME 추가
    • Windows 검색창에 “환경 변수” 입력 → “시스템 환경 변수 편집” 클릭
    • [환경 변수(N)…] 버튼 클릭
    • 시스템 변수 영역에서 [새로 만들기(N)…] 클릭
    • 변수 이름: RTOOLS45_HOME
    • 변수 값: C:\rtools45 (실제 설치 경로)
    • 확인 → 확인
  7. PATH에 Rtools 경로 추가
    • 같은 창에서 시스템 변수 → Path 선택 → [편집]
    • [새로 만들기]%RTOOLS45_HOME%\usr\bin\ 입력
    • 확인 → 확인
  8. RStudio 재시작 후 아래 코드로 경로 확인
Sys.getenv("RTOOLS45_HOME")
system("gcc --version")

RStudio 경로 보강(필요 시)

환경변수가 잡혔는데도 컴파일이 실패한다면 아래를 추가로 적용합니다.

writeLines('PATH="%RTOOLS45_HOME%\\usr\\bin;${PATH}"', con = "~/.Renviron")

5. R 기본 데이터셋으로 실습 시작

R에는 기본 내장 데이터셋이 있습니다. datasets 패키지에서 제공하며, iris, mtcars, airquality 같은 데이터가 대표적입니다.

5.1 데이터 목록 확인

data()

예시 출력(일부만 표시):

AirPassengers   BJsales       ChickWeight  CO2
airquality      BOD           co2          DNase

5.2 iris 데이터 불러오기

data(iris)
head(iris)
str(iris)

예시 출력(head):

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

예시 출력(str):

'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor","virginica": 1 1 1 1 1 1 ...

iris 데이터 특징 - 150개 행, 5개 열 - 꽃잎/꽃받침 길이와 품종 정보 포함


6. dplyr 기본 조작 (select, filter, mutate, summarise)

6.1 열 선택(select)

iris %>%
  select(Sepal.Length, Species) %>%
  head()

예시 출력:

  Sepal.Length Species
1          5.1  setosa
2          4.9  setosa
3          4.7  setosa
4          4.6  setosa
5          5.0  setosa
6          5.4  setosa

6.2 조건 필터(filter)

iris %>%
  filter(Species == "setosa") %>%
  head()

예시 출력:

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

6.3 새로운 열 추가(mutate)

iris %>%
  mutate(Sepal.Ratio = Sepal.Length / Sepal.Width) %>%
  head()

예시 출력(일부 열만 표시):

  Sepal.Length Sepal.Width Sepal.Ratio
1          5.1         3.5   1.457143
2          4.9         3.0   1.633333
3          4.7         3.2   1.468750
4          4.6         3.1   1.483871
5          5.0         3.6   1.388889
6          5.4         3.9   1.384615

6.4 요약(summarise + group_by)

iris %>%
  group_by(Species) %>%
  summarise(
    mean_sepal = mean(Sepal.Length),
    mean_petal = mean(Petal.Length)
  )

예시 출력(소수점은 반올림 표시):

     Species mean_sepal mean_petal
1     setosa       5.01       1.46
2 versicolor       5.94       4.26
3  virginica       6.59       5.55

7. NA 처리 (drop_na, fill, replace_na)

NA는 결측값입니다. R에서 결측값을 정리하는 데 tidyr 함수가 많이 쓰입니다.

7.1 NA가 있는 데이터 만들기

df <- tibble(
  x = c(1, 2, 3, NA),
  y = c(3, NA, 5, NA)
)

예시 출력:

# A tibble: 4 × 2
      x     y
  <dbl> <dbl>
1     1     3
2     2    NA
3     3     5
4    NA    NA

7.2 drop_na(): NA가 있는 행 제거

df %>% drop_na()

예시 출력:

# A tibble: 2 × 2
      x     y
  <dbl> <dbl>
1     1     3
2     3     5

7.3 fill(): 위/아래 값으로 채우기

df2 <- tibble(
  x = 1:4,
  y = c(NA, 10, 20, NA)
)

# 위쪽 값으로 채우기
f1 <- df2 %>% fill(y, .direction = "up")

# 아래쪽 값으로 채우기
f2 <- df2 %>% fill(y, .direction = "down")

예시 출력(f1):

# A tibble: 4 × 2
      x     y
  <int> <dbl>
1     1    10
2     2    10
3     3    20
4     4    NA

예시 출력(f2):

# A tibble: 4 × 2
      x     y
  <int> <dbl>
1     1    NA
2     2    10
3     3    20
4     4    20

7.4 replace_na(): 특정 값으로 채우기

df %>% replace_na(list(x = 0, y = 2))

예시 출력:

# A tibble: 4 × 2
      x     y
  <dbl> <dbl>
1     1     3
2     2     2
3     3     5
4     0     2

8. across / c_across / pick (실무에서 자주 헷갈리는 포인트)

8.1 across: 여러 열에 동일 함수 적용

iris %>%
  mutate(across(where(is.numeric), ~ .x / 10)) %>%
  head()

예시 출력(일부 열만 표시):

  Sepal.Length Sepal.Width Petal.Length
1         0.51        0.35         0.14
2         0.49        0.30         0.14
3         0.47        0.32         0.13
4         0.46        0.31         0.15
5         0.50        0.36         0.14
6         0.54        0.39         0.17

설명: across()는 여러 열에 같은 함수를 적용합니다. dplyr 공식 문서에서도 across는 mutate/summarise 안에서 다중 열을 처리하는 표준 방법이라고 설명합니다.

8.2 c_across + rowwise: 행 단위 계산

set.seed(1)
df <- tibble(id = 1:4, w = runif(4), x = runif(4), y = runif(4), z = runif(4))

df %>%
  rowwise() %>%
  mutate(
    sum = sum(c_across(w:z)),
    sd  = sd(c_across(w:z))
  )

예시 출력(일부 열만 표시):

# A tibble: 4 × 7
     id     w     x     y     z   sum     sd
  <int> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1     1 0.266 0.898 0.206 0.498 1.87  0.311
2     2 0.372 0.945 0.177 0.717 2.21  0.344
3     3 0.573 0.661 0.687 0.991 2.91  0.181
4     4 0.908 0.629 0.384 0.381 2.30  0.224

설명: c_across()rowwise()와 함께 행 단위 계산을 쉽게 합니다.

8.3 pick: 선택한 열만 묶어서 사용

iris %>%
  mutate(measurements = pick(Sepal.Length, Sepal.Width)) %>%
  head()

예시 출력(일부 열만 표시):

  Sepal.Length Sepal.Width              measurements
1          5.1         3.5 5.1, 3.5 (tibble 1×2)
2          4.9         3.0 4.9, 3.0 (tibble 1×2)
3          4.7         3.2 4.7, 3.2 (tibble 1×2)

설명: pick()은 mutate/summarise 안에서 특정 열들을 data.frame 형태로 선택하는 함수입니다.


9. 기본 데이터셋으로 미니 프로젝트

9.1 mtcars로 연비 분석

data(mtcars)

mtcars %>%
  group_by(cyl) %>%
  summarise(
    avg_mpg = mean(mpg),
    avg_hp  = mean(hp)
  )

mtcars 데이터는 1974년 Motor Trend US 잡지에서 추출된 자동차 성능 데이터입니다.

9.2 airquality로 결측 처리

data(airquality)

# 결측치 확인
colSums(is.na(airquality))

# NA 제거
airquality_clean <- airquality %>% drop_na()

# 요약
summary(airquality_clean)

airquality 데이터는 1973년 뉴욕의 대기질 측정치로 구성되어 있습니다.

9.3 ChickWeight로 성장 데이터 관찰

data(ChickWeight)

ChickWeight %>%
  group_by(Diet) %>%
  summarise(
    avg_weight = mean(weight),
    n = n()
  )

ChickWeight 데이터는 병아리의 식이별 성장 실험 데이터를 담고 있습니다.


10. 체크리스트

항목 확인
R 설치 R 버전 확인이 되는가?
RStudio 설치 콘솔이 정상 실행되는가?
패키지 설치 tidyverse, readxl, janitor 불러오기 되는가?
기본 조작 select/filter/mutate/summarise 이해됐는가?
결측 처리 drop_na/fill/replace_na 사용해봤는가?
across/pick 여러 열을 다루는 방법 이해했는가?


함께 읽으면 좋은 글