HOWTO · R

R에서 CSV로 데이터 프레임 내보내기

write.csv(), write.table(), data.table::fwrite(), readr::write_csv()를 사용하여 R 데이터 프레임을 CSV로 내보내는 방법을 알아봅니다.

이 페이지의 내용

Base R의 write.csv()를 사용하면 데이터 프레임을 쉼표로 구분된 파일로 저장할 수 있고, 구분자를 직접 지정하려면 write.table()을 사용할 수 있습니다. data.table::fwrite()와 readr::write_csv()는 패키지에서 제공하는 대안입니다. 아래 예제는 하나의 작은 데이터 프레임을 사용하며, 각 파일이 저장되는 위치와 행 이름이 포함되는지 설명합니다.

write.csv()와 write.table()로 데이터 프레임 내보내기

다음 Base R 예제는 두 형식의 파일을 R의 임시 디렉터리에 저장하고 파일이 존재하는지 확인합니다. 기록된 실행은 성공적으로 완료되었으며 두 파일 존재 여부 확인 결과는 모두 TRUE였습니다.

people <- data.frame(
  Name = c("Alice", "Bob", "Charlie"),
  Age = c(25, 30, 35),
  City = c("New York", "Los Angeles", "Chicago")
)

csv_path <- file.path(tempdir(), "people.csv")
table_path <- file.path(tempdir(), "people-table.csv")

write.csv(people, file = csv_path, row.names = FALSE)
write.table(people, file = table_path, sep = ",", row.names = FALSE, col.names = TRUE)

file.exists(c(csv_path, table_path))
[1] TRUE TRUE

file.path(tempdir(), ...)를 사용하면 출력 위치를 명시할 수 있어 현재 작업 디렉터리에 의존하지 않습니다. 파일을 영구적으로 저장하려면 임시 경로를 "people.csv" 같은 파일 이름으로 바꾸어 작업 디렉터리에 저장하거나 전체 경로를 지정하세요. Windows 경로에도 "C:/Users/you/Documents/people.csv"처럼 슬래시를 사용할 수 있습니다. file.path()는 현재 운영체제에 맞게 경로 구성 요소를 조합할 수도 있습니다.

write.csv()는 쉼표로 구분된 데이터를 쓰도록 설정된 write.table()의 편의 함수입니다. 두 함수 모두 기본적으로 행 이름을 포함합니다. row.names = FALSE로 설정하면 행 이름이 제외되고, row.names = TRUE로 설정하면 행 이름이 첫 번째 필드로 기록됩니다. write.table()에서는 sep으로 구분자를 지정할 수 있습니다. 쉼표로 구분된 데이터를 쓰려면 sep = ","를 사용하고, 첫 줄에 열 이름을 넣으려면 col.names = TRUE를 유지하세요. file.exists()는 요청한 각 경로에 대해 논리값을 반환하므로 파일이 생성되었는지 확인할 수 있습니다. 파일 내용을 확인하려면 텍스트 편집기나 스프레드시트 앱에서 여세요.

data.table::fwrite()로 데이터 프레임 내보내기

data.table 패키지는 데이터 프레임이나 데이터 테이블을 구분자로 나뉜 파일에 쓰는 fwrite()를 제공합니다. 패키지는 install.packages("data.table")로 한 번 설치한 다음, 호출하기 전에 library(data.table)로 불러오세요. 앞에서 만든 people 데이터 프레임에 data.table::fwrite(people, file.path(tempdir(), "people-fwrite.csv"))를 사용하면 쉼표로 구분된 파일이 작성되며 행 이름은 포함되지 않습니다. data.table::fwrite()처럼 네임스페이스를 지정하면 해당 함수가 어느 패키지에서 제공되는지 명확해집니다. 위에서 확인한 실행에는 Base R만 포함되어 있습니다. 이 패키지 예제는 사용법 안내로 제시되며 실행되지는 않았습니다.

readr::write_csv()로 데이터 프레임 내보내기

readr 패키지도 사용할 수 있습니다. install.packages("readr")로 한 번 설치한 다음 library(readr)로 불러오거나 네임스페이스를 지정해 함수를 호출하세요. 같은 데이터에 readr::write_csv(people, file.path(tempdir(), "people-readr.csv"))를 사용하면 쉼표로 구분된 값이 기록되고 행 이름은 제외되며 열 이름은 포함됩니다. CSV를 쓰는 함수이므로 write.table()과 달리 write_csv()에는 구분자를 지정하는 인수가 없습니다. 위에서 확인한 실행에는 Base R만 포함되어 있습니다. 이 readr 예제는 사용법 안내로 제시되며 실행되지는 않았습니다.