R에서 CSV나 엑셀 파일이 읽히지 않을 때는 함수 옵션을 바꾸기 전에 파일 경로, 인코딩, 시트 이름을 확인해야 합니다. 현재 작업 폴더와 실제 파일 위치부터 비교하면 원인을 하나씩 좁힐 수 있습니다.
CSV는 readr::read_csv(), 엑셀은 readxl::read_excel()로 시작합니다. 불러온 직후 str()과 names()로 열 자료형과 열 이름까지 확인해야 입력 단계가 끝납니다.

가장 먼저 파일 경로를 확인합니다
getwd()
list.files()
file.exists("data/sales.csv")
file.exists()가 FALSE라면 읽기 함수의 옵션을 바꾸기 전에 경로부터 고칩니다. 프로젝트 기준의 상대 경로를 쓰면 다른 컴퓨터에서도 코드를 재사용하기 쉽습니다.

상대 경로가 어느 위치를 기준으로 해석되는지 헷갈리면 normalizePath("data/sales.csv", mustWork = FALSE)로 R이 보고 있는 경로를 확인합니다. 경로 문자열과 실제 파일 위치를 나란히 비교한 뒤 읽기 함수를 실행합니다.
CSV 파일 불러오기
library(readr)
sales <- read_csv("data/sales.csv")
str(sales)
names(sales)

read_csv()는 쉼표로 구분된 파일에 사용합니다. 세미콜론이나 탭으로 구분된 파일이라면 각각 read_csv2() 또는 read_tsv()를 검토합니다.
한글이 깨지면 인코딩을 지정합니다
Windows에서 저장한 오래된 CSV는 UTF-8이 아닐 수 있습니다. 원본 파일의 인코딩을 확인한 뒤 locale()로 명시합니다.

sales <- read_csv(
"data/sales.csv",
locale = locale(encoding = "CP949")
)
한글 깨짐을 해결하려고 여러 인코딩을 무작정 대입하면 일부 글자만 조용히 손상될 수 있습니다. 가능하면 원본을 UTF-8 CSV로 다시 저장하고 입력 결과를 표본 확인합니다.
엑셀 파일과 시트 불러오기

library(readxl)
excel_sheets("data/sales.xlsx")
sales_xlsx <- read_excel("data/sales.xlsx", sheet = "2026매출")
시트 이름에는 공백이 포함될 수 있으므로 화면에 보이는 이름을 정확히 사용합니다. 첫 행이 제목이 아니라면 skip, 열 이름이 없다면 col_names 옵션을 조정합니다.
숫자가 문자로 읽힐 때

한 열 안에 쉼표가 포함된 숫자, -, 미정 같은 값이 섞이면 문자형으로 추정될 수 있습니다. 먼저 문제 값을 확인한 뒤 정리하고 변환해야 합니다.
problems(sales)
sales$amount <- parse_number(sales$amount)
problems()는 앞에서 read_csv()로 읽은 sales 객체의 파싱 문제를 확인하는 함수입니다. sales_xlsx처럼 read_excel()로 읽은 객체에는 같은 방식으로 적용하지 않습니다.

빈 셀과 결측값 처리
빈 셀 외에 NA, N/A, 미입력을 결측값으로 쓰는 파일도 있습니다. 읽을 때 na 옵션으로 규칙을 명시하면 이후 요약 결과가 일관됩니다.
sales <- read_csv("data/sales.csv", na = c("", "NA", "미입력"))

입력 직후 점검할 네 가지
dim()으로 행과 열의 수를 확인합니다.names()로 열 이름이 밀리지 않았는지 봅니다.str()로 숫자·문자·날짜형을 확인합니다.head()로 원본의 첫 행과 비교합니다.
인코딩이나 시트 옵션에서 막히면 R 엑셀·CSV 파일 불러오기 가이드의 해당 예제와 자신의 입력값을 나란히 놓고 비교하면 됩니다.
'R' 카테고리의 다른 글
| R 프로그래밍 독학 교재 고르는 법: 목차에서 확인할 5가지 (0) | 2026.09.15 |
|---|---|
| R 초보 오류 해결 순서: 메시지 읽기부터 최소 예제까지 (0) | 2026.09.14 |
| R 데이터 분석 패키지 입문: tidyverse부터 무엇을 설치할까 (0) | 2026.09.12 |
| R 조건문 반복문 기초: if·for·while을 고르는 기준 (0) | 2026.09.11 |
| R 데이터 구조 차이: 벡터·리스트·행렬·데이터프레임 구분법 (0) | 2026.09.10 |
댓글