R Academy · Pelajaran

Menulis Data ke Berbagai Format

Ekspor data frame ke CSV, Excel, dan RDS dengan write_csv() serta writexl.

Pelajaran 4 dari 413 langkah

Menulis Data ke Berbagai Format adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Menulis Data dari R

Membaca data hanyalah separuh proses — Anda juga perlu menyimpan hasilnya. R mendukung berbagai format keluaran: CSV untuk kompatibilitas universal, RDS untuk mempertahankan objek R secara persis, Parquet untuk analitik berperforma tinggi, dan lainnya. Pilih format berdasarkan audiens dan tujuan penggunaannya.

library(readr)

# Create a sample data frame to write
df <- data.frame(
  name = c('Alice','Bob','Carol'),
  score = c(85.5, 92.0, 78.3),
  grade = c('B','A','C'),
  passed = c(TRUE, TRUE, TRUE)
)

print(df)
cat('\nWe will save this in multiple formats!')

write_csv() — Menyimpan sebagai CSV

write_csv(df, 'file.csv') menyimpan kerangka data sebagai file yang dipisahkan koma. Fungsi ini TIDAK menulis nama baris secara bawaan (berbeda dengan write.csv()). Hasilnya selalu dikodekan dalam UTF-8. Fungsi ini mengembalikan kerangka data secara tidak terlihat, sehingga dapat digunakan dalam pipe.

library(readr)

df <- data.frame(
  name = c('Alice','Bob','Carol'),
  score = c(85, 92, 78)
)

# Write to /tmp for demonstration
write_csv(df, '/tmp/students.csv')

# Verify by reading back
read_csv('/tmp/students.csv', show_col_types=FALSE)

Opsi write_csv()

write_csv() menerima beberapa opsi: na='NA' mengatur cara penulisan NA, append=TRUE menambahkan data ke file yang sudah ada, col_names=FALSE menghilangkan header, dan quote mengatur kapan bidang diberi tanda kutip.

library(readr)

df <- data.frame(
  name = c('Alice','Bob'),
  city = c('New York','Los,Angeles'),  # Contains comma
  score = c(85, NA)
)

# na='' writes NA as empty string (common Excel convention)
write_csv(df, '/tmp/test_write.csv', na='')
cat(paste(read_lines('/tmp/test_write.csv'), collapse='\n'))

write_tsv() — Keluaran yang Dipisahkan Tab

write_tsv(df, 'file.tsv') menyimpan data dalam format yang dipisahkan tab. Format ini lebih disukai saat data berisi koma atau saat sistem berikutnya mengharapkan TSV. Opsinya sama seperti write_csv().

library(readr)

df <- data.frame(
  address = c('123 Main St, NYC','456 Oak Ave, LA'),
  score = c(85, 92)
)

# TSV avoids delimiter conflict with commas in addresses
write_tsv(df, '/tmp/addresses.tsv')
cat(paste(read_lines('/tmp/addresses.tsv'), collapse='\n'))

saveRDS() — Menyimpan Objek R Apa Pun

saveRDS(obj, 'file.rds') membuat serialisasi objek R apa pun ke disk dalam format biner asli R. readRDS('file.rds') memulihkannya secara persis — termasuk tipe kolom, faktor, atribut, bahkan objek model. Format ini tidak dapat dibaca manusia, tetapi sepenuhnya portabel antar-sesi R.

library(readr)

df <- data.frame(
  name = c('Alice','Bob'),
  score = c(85.5, 92.0),
  grade = factor(c('B','A'), levels=c('A','B','C','D'))
)

# Save with full type preservation
saveRDS(df, '/tmp/students.rds')

# Restore exactly
df2 <- readRDS('/tmp/students.rds')
print(df2)
print(class(df2$grade))  # factor — preserved!

saveRDS() vs save() — Perbedaan Utama

saveRDS(obj, 'file.rds') menyimpan satu objek tanpa namanya. readRDS() memungkinkan Anda menetapkan nama apa pun untuk objek tersebut. save(obj1, obj2, 'file.RData') menyimpan beberapa objek bernama; load() memulihkannya dengan nama asli (dan dapat menimpa variabel yang sudah ada).

# saveRDS: single object, flexible on load
model <- lm(mpg ~ wt, data=mtcars)
saveRDS(model, '/tmp/my_model.rds')
best_model <- readRDS('/tmp/my_model.rds')  # Any name!
cat('R-squared:', round(summary(best_model)$r.squared, 3), '\n')

# save: multiple named objects, fixed names on load
# save(model, mtcars, file='/tmp/workspace.RData')
# load('/tmp/workspace.RData')  # Restores 'model' and 'mtcars'

write_delim() — Pembatas Khusus

write_delim(df, file, delim='|') menulis data menggunakan pembatas apa pun. Gunakan ini saat sistem berikutnya mengharapkan format yang dipisahkan garis tegak atau format nonstandar lainnya. Jaminan kualitas data yang sama seperti pada write_csv() tetap berlaku.

library(readr)

df <- data.frame(
  id = 1:3,
  name = c('Alice','Bob','Carol'),
  value = c(100, 200, 150)
)

# Write pipe-delimited
write_delim(df, '/tmp/data.psv', delim='|')
cat(paste(read_lines('/tmp/data.psv'), collapse='\n'))

Keluaran Excel dengan writexl

Paket writexl (pendamping readxl) menulis kerangka data ke format .xlsx: writexl::write_xlsx(df, 'file.xlsx'). Untuk beberapa lembar, berikan daftar bernama. Java atau instalasi Excel tidak diperlukan.

# writexl::write_xlsx() — example (library not always available)
# library(writexl)

df1 <- data.frame(name=c('Alice','Bob'), score=c(85,92))
df2 <- data.frame(region=c('East','West'), sales=c(100,200))

# Single sheet:
# write_xlsx(df1, '/tmp/students.xlsx')

# Multiple sheets (named list):
# write_xlsx(
#   list(students=df1, sales=df2),
#   '/tmp/report.xlsx'
# )

cat('writexl writes pure .xlsx without Java or Excel!')

File Parquet dengan arrow

Apache Parquet adalah format penyimpanan berbasis kolom yang ideal untuk kumpulan data besar: format ini dapat dikompresi dengan baik dan dibaca jauh lebih cepat daripada CSV untuk kueri berorientasi kolom. Paket arrow menyediakan write_parquet() dan read_parquet().

# arrow::write_parquet() concept
# library(arrow)

# Large CSV -> Parquet (10-100x smaller, 10-100x faster reads)
# df <- read_csv('big_file.csv')
# write_parquet(df, 'big_file.parquet')
# df_back <- read_parquet('big_file.parquet')

# Parquet benefits:
# - Columnar: only reads columns you need
# - Compressed: ~10x smaller than CSV
# - Typed: no type re-guessing on read
# - Partitioned: split by date/region for parallel reads

cat('Parquet is the modern standard for large-scale analytics in R!')

Menulis Data dalam Pipeline

Baik write_csv() maupun saveRDS() mengembalikan inputnya secara tidak terlihat, sehingga dapat digunakan di dalam pipe tanpa mengganggu alur. Sisipkan langkah penulisan di tengah pipeline dengan titik pemeriksaan write_csv() untuk memastikan hasil dapat direproduksi.

library(readr)
library(dplyr)

# Write mid-pipeline as a checkpoint
final_result <- data.frame(
  region=c('East','West','North'),
  sales=c(100,200,80)
) %>%
  mutate(pct = round(100*sales/sum(sales),1)) %>%
  {. ->> checkpoint_df; .} %>%  # Save checkpoint
  filter(sales > 90)

write_csv(checkpoint_df, '/tmp/checkpoint.csv')
print(final_result)

Panduan Memilih Format

Pemilihan format keluaran yang tepat bergantung pada tujuan Anda:

  • CSV/TSV: universal, dapat dibaca manusia, dan dapat dibuka siapa saja
  • RDS: dari R ke R, mempertahankan semua tipe dan atribut secara persis
  • xlsx: untuk pengguna bisnis dan pengguna Excel
  • Parquet: untuk data besar, pipeline analitik, dan sistem produksi
  • JSON: untuk API serta data bertingkat atau hierarkis (jsonlite::toJSON())
library(readr)

df <- data.frame(
  id = 1:5,
  value = c(10.5, 20.3, 15.7, 30.1, 25.8)
)

# CSV — universal
write_csv(df, '/tmp/data.csv')

# TSV — when commas are in data
write_tsv(df, '/tmp/data.tsv')

# RDS — R-native, type-preserving
saveRDS(df, '/tmp/data.rds')

cat('Files created:\n')
cat('CSV size:', file.size('/tmp/data.csv'), 'bytes\n')
cat('RDS size:', file.size('/tmp/data.rds'), 'bytes\n')

Pemeriksaan Singkat

Apa keunggulan utama saveRDS() dibandingkan write_csv() untuk menyimpan data R?

Ringkasan: Menulis Data

Inti pembelajaran untuk menulis data dari R:

  • write_csv(df, 'file.csv') — dipisahkan koma, tanpa nama baris, UTF-8
  • write_tsv(df, 'file.tsv') — keluaran yang dipisahkan tab
  • write_delim(df, file, delim='|') — pembatas apa pun
  • saveRDS(obj, 'file.rds') — format biner R, mempertahankan semua tipe
  • readRDS('file.rds') — memulihkan dengan nama apa pun; load() memulihkan nama asli
  • writexl::write_xlsx() — keluaran Excel, tanpa memerlukan Java
  • arrow::write_parquet() — format berbasis kolom untuk kumpulan data analitik besar
library(readr)

df <- data.frame(
  name = c('Alice','Bob','Carol'),
  score = c(85.5, 92.0, 78.3),
  grade = factor(c('B','A','C'))
)

# CSV: universal but loses factor
write_csv(df, '/tmp/demo.csv')
df_csv <- read_csv('/tmp/demo.csv', show_col_types=FALSE)
cat('CSV grade type:', class(df_csv$grade), '\n')  # character

# RDS: preserves factor
saveRDS(df, '/tmp/demo.rds')
df_rds <- readRDS('/tmp/demo.rds')
cat('RDS grade type:', class(df_rds$grade))  # factor
Gratis untuk memulai

Belajar R dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
43
Pelajaran
159

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis Data ke Berbagai Format” gratis?

Ya — teks lengkap “Menulis Data ke Berbagai Format” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menulis Data ke Berbagai Format”?

Ekspor data frame ke CSV, Excel, dan RDS dengan write_csv() serta writexl. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Menulis Data ke Berbagai Format” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membaca File CSV dengan read_csv()
  2. Mengurai File TSV dan Lebar Tetap
  3. Mengimpor File Excel dengan readxl
  4. Menulis Data ke Berbagai Format
← Kembali ke R Academy