read_csv()로 CSV 파일 읽기
열 형식 추정, 건너뛰기, 인코딩 옵션을 사용하여 구분된 파일을 가져옵니다.
read_csv()로 CSV 파일 읽기은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기본 R 대신 readr를 사용하는 이유
기본 R에도 read.csv()가 있지만, readr 패키지의 read_csv()는 더 빠르고 데이터 프레임이 아닌 tibble을 반환합니다. 또한 기본 열 유형 추정이 더 우수하며, 감지한 열 유형에 대한 유용한 메시지도 제공합니다.
library(readr)
# read_csv() vs read.csv():
# 1. Returns a tibble (prints nicely, faster subsetting)
# 2. Does NOT convert strings to factors by default
# 3. Shows column specification message
# 4. Faster for large files
# Example with a simple inline CSV:
df <- read_csv('name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C')
print(df)
print(class(df))파일 경로에서 read_csv() 사용하기
가장 일반적인 사용법은 파일 경로 문자열을 read_csv()에 전달하는 것입니다. 이 함수는 구분 기호가 쉼표임을 자동으로 감지하고, 첫 번째 행을 열 이름으로 읽으며, 처음 1000개 행을 바탕으로 열 유형을 추정합니다.
library(readr)
# Reading from a file path (illustrative — file not present)
# df <- read_csv('data/sales_2024.csv')
# Reading from a URL also works:
# df <- read_csv('https://example.com/data.csv')
# Using a literal inline string for demonstration:
df <- read_csv('region,q1,q2,q3
East,100,120,115
West,200,195,210
North,80,85,90')
print(df)col_types — 열 유형 지정하기
col_types를 사용하면 readr의 유형 추정을 재정의할 수 있습니다. 간결한 문자열(열마다 한 문자: c=문자, d=double, i=정수, l=논리형, D=날짜, _=건너뛰기) 또는 cols() 지정 방식을 전달합니다.
library(readr)
df <- read_csv('id,date,amount,active
1,2024-01-15,99.99,TRUE
2,2024-02-20,149.50,FALSE
3,2024-03-10,75.00,TRUE',
# Compact: integer, Date, double, logical
col_types = 'iDdl')
print(df)
cat('\nColumn types:\n')
print(sapply(df, class))명시적으로 유형을 지정하는 cols()
더 세밀하게 제어하려면 cols()를 사용해 각 열의 유형을 지정합니다. 다음 수집기 함수를 사용할 수 있습니다: col_double(), col_character(), col_integer(), col_date(format=), col_skip(), col_guess().
library(readr)
df <- read_csv('id,name,score,date
1,Alice,85.5,2024-01-15
2,Bob,92.0,2024-02-20
3,Carol,78.3,2024-03-10',
col_types = cols(
id = col_integer(),
name = col_character(),
score = col_double(),
date = col_date(format = '%Y-%m-%d')
))
print(df)
print(class(df$date))skip 및 n_max 인수
skip=n은 읽기 전에 처음 n개 행을 건너뜁니다(메타데이터나 주석 머리글을 건너뛸 때 유용합니다). n_max=n은 최대 n개의 데이터 행만 읽으므로, 큰 파일을 미리 보거나 첫 번째 부분만 불러올 때 적합합니다.
library(readr)
# File with metadata in first 2 lines
# (simulated with literal string)
df <- read_csv('# Generated 2024-01-15
# Source: internal DB
name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C
Dave,88,B',
skip = 2, # Skip the 2 comment lines
n_max = 3 # Read only 3 data rows
)
print(df)na 인수 — 결측값 정의하기
기본적으로 read_csv()는 빈 문자열과 NA를 결측값으로 처리합니다. na 인수를 사용하면 NA로 읽어야 할 문자열을 추가로 지정할 수 있습니다. 흔한 예로 'N/A', 'NULL', '-999', '.'가 있습니다.
library(readr)
df <- read_csv('name,score,city
Alice,85,NYC
Bob,N/A,NULL
Carol,78,.
Dave,-999,Chicago',
na = c('', 'NA', 'N/A', 'NULL', '.', '-999')
)
print(df)
cat('NAs per column:\n')
print(colSums(is.na(df)))col_names — 사용자 지정 열 이름
파일에 머리글 행이 없으면 col_names = FALSE로 설정합니다. 그러면 readr가 열 이름을 X1, X2 등으로 자동 지정합니다. 또는 문자 벡터를 col_names에 전달해 사용자 지정 이름을 지정하고 머리글 행을 건너뛸 수 있습니다.
library(readr)
# File without headers
df <- read_csv('Alice,85,NYC
Bob,92,LA
Carol,78,Chicago',
col_names = c('name','score','city')
)
print(df)
# auto-names when no header:
df2 <- read_csv('1,2,3
4,5,6', col_names = FALSE)
print(df2)locale() — 표준이 아닌 형식 처리하기
locale()은 readr가 지역별 형식을 해석하는 방식을 제어합니다. 여기에는 소수점 표시(유럽 데이터에서 ','), 날짜 형식, 인코딩, 자릿수 구분 기호가 포함됩니다. 이를 read_csv(locale=...)에 전달합니다.
library(readr)
# European-style CSV: semicolons as delimiters, comma as decimal
# read_csv2() is shorthand for this locale
df <- read_csv2('name;price;qty
Alice;9,99;100
Bob;24,50;50',
locale = locale(decimal_mark=',')
)
print(df)
# For dates in non-ISO format:
parse_date('15/01/2024', format='%d/%m/%Y')progress 및 show_col_types
큰 파일을 처리할 때 read_csv()는 진행률 표시줄을 보여 줍니다. progress=FALSE로 설정하면 이를 표시하지 않을 수 있습니다(스크립트에서 유용합니다). 열 유형을 이미 확인했다면 show_col_types=FALSE로 열 유형 메시지를 숨길 수 있습니다.
library(readr)
# Suppress progress and type messages for production scripts
df <- read_csv(
'a,b,c
1,x,TRUE
2,y,FALSE',
show_col_types = FALSE,
progress = FALSE
)
print(df)Problems() — 구문 분석 실패 진단하기
readr가 예상 유형과 일치하지 않는 값을 발견하면 NA로 대체하고 경고를 기록합니다. problems(df)를 호출하면 문제가 발생한 정확한 행과 열, 그리고 원래 값이 무엇이었는지 확인할 수 있습니다.
library(readr)
# Intentional type mismatch: 'N/A' in numeric column
df <- suppressWarnings(read_csv(
'id,score
1,85
2,N/A
3,92',
col_types = cols(score = col_double())
))
print(df)
print(problems(df))map()으로 여러 파일 읽기
readr와 purrr::map()을 결합하면 여러 CSV 파일을 한 번에 읽고 행 방향으로 결합할 수 있습니다. 이 패턴은 월별 또는 분기별 데이터가 별도의 파일로 저장되어 있을 때 처리하는 데 필수적입니다.
library(readr)
library(purrr)
library(dplyr)
# Simulated: read and bind multiple CSV files
files <- c('q1.csv', 'q2.csv', 'q3.csv')
# In practice:
# all_data <- map_df(files, read_csv, show_col_types=FALSE)
# Demonstration with inline data:
q1 <- read_csv('month,sales\nJan,100\nFeb,120', show_col_types=FALSE)
q2 <- read_csv('month,sales\nApr,130\nMay,145', show_col_types=FALSE)
bind_rows(list(q1=q1, q2=q2), .id='quarter')빠른 확인
'N/A'와 '-99' 값을 결측값(NA)으로 처리해야 한다고 read_csv()에 어떻게 알려 주나요?
복습: readr로 read_csv() 사용하기
readr로 CSV 파일을 읽을 때 기억할 핵심 내용:
read_csv('file.csv')— CSV를 읽고 tibble을 반환하며 열 유형을 추정col_types = 'idcl'또는cols(x=col_double())— 유형을 명시적으로 지정skip=n— 머리글 또는 메타데이터 행 건너뛰기;n_max=n— 읽을 행 수 제한na = c('N/A','NULL')— 추가 문자열을 NA로 처리locale(decimal_mark=',')— 유럽식 숫자 형식 처리show_col_types=FALSE— 스크립트에서 유형 정보 숨기기problems(df)— 구문 분석 실패 확인- 여러 파일에는
map_df(files, read_csv)와 결합해 사용
library(readr)
# Production-ready read_csv() call
df <- read_csv(
'name,score,city,active
Alice,85,NYC,TRUE
Bob,N/A,LA,FALSE
Carol,78,NULL,TRUE',
col_types = cols(
name = col_character(),
score = col_double(),
city = col_character(),
active = col_logical()
),
na = c('', 'NA', 'N/A', 'NULL'),
show_col_types = FALSE
)
print(df)자주 묻는 질문
“read_csv()로 CSV 파일 읽기” 강의는 무료인가요?
네 — “read_csv()로 CSV 파일 읽기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“read_csv()로 CSV 파일 읽기”에서 뭘 배우나요?
열 형식 추정, 건너뛰기, 인코딩 옵션을 사용하여 구분된 파일을 가져옵니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
R Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“read_csv()로 CSV 파일 읽기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- read_csv()로 CSV 파일 읽기
- TSV 및 고정 너비 파일 구문 분석
- readxl로 Excel 파일 가져오기
- 여러 형식으로 데이터 작성하기