0Pricing
R Academy · Pelajaran

Membaca File CSV dengan read_csv()

Impor file berbatas dengan opsi penebakan tipe kolom, pelewatan, dan pengodean.

Membaca File CSV dengan read_csv() adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Mengapa Menggunakan readr, Bukan R Dasar?

R dasar memiliki read.csv(), tetapi fungsi read_csv() dari paket readr lebih cepat, mengembalikan tibble (bukan bingkai data), memberikan perkiraan tipe bawaan yang lebih baik, serta menampilkan pesan informatif tentang tipe kolom yang terdeteksi.

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() dari Jalur File

Penggunaan yang paling umum adalah meneruskan string jalur file ke read_csv(). Fungsi ini secara otomatis mendeteksi koma sebagai pembatas, membaca baris pertama sebagai tajuk, dan memperkirakan tipe kolom dari 1000 baris pertama.

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 — Menentukan Tipe Kolom

Gunakan col_types untuk mengganti perkiraan tipe dari readr. Teruskan string ringkas (satu karakter per kolom: c=karakter, d=double, i=integer, l=logika, D=tanggal, _=lewati) atau spesifikasi 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() untuk Spesifikasi Tipe Eksplisit

Untuk kontrol yang lebih besar, gunakan cols() untuk menentukan tipe setiap kolom berdasarkan namanya. Gunakan fungsi pengumpul: col_double(), col_character(), col_integer(), col_date(format=), col_skip(), dan 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))

Argumen skip dan n_max

skip=n melewati n baris pertama sebelum pembacaan dimulai (berguna untuk metadata atau tajuk komentar). n_max=n membaca paling banyak n baris data — ideal untuk melihat pratinjau file besar atau hanya memuat bagian pertama.

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)

Argumen na — Menentukan Nilai yang Hilang

Secara bawaan, read_csv() memperlakukan string kosong dan NA sebagai nilai yang hilang. Gunakan argumen na untuk menentukan string tambahan yang harus dibaca sebagai NA — contoh umum: '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 — Nama Kolom Kustom

Tetapkan col_names = FALSE jika file tidak memiliki baris tajuk — readr akan memberi nama kolom secara otomatis sebagai X1, X2, dan seterusnya. Sebagai alternatif, teruskan vektor karakter ke col_names untuk menentukan nama kustom dan melewati baris tajuk.

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() — Menangani Format Non-Standar

locale() mengatur cara readr menafsirkan format khusus lokal: tanda desimal (',' dalam data Eropa), format tanggal, pengodean, dan tanda pengelompokan. Teruskan fungsi ini ke 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 dan show_col_types

Untuk file besar, read_csv() menampilkan bilah kemajuan. Tetapkan progress=FALSE untuk menyembunyikannya (berguna dalam skrip). show_col_types=FALSE menyembunyikan pesan tipe kolom jika Anda sudah memverifikasi tipenya.

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() — Mendiagnosis Kegagalan Penguraian

Ketika readr menemukan nilai yang tidak sesuai dengan tipe yang diharapkan, readr menggantinya dengan NA dan mencatat peringatan. Panggil problems(df) untuk memeriksa baris dan kolom mana yang bermasalah serta nilai aslinya.

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))

Membaca Banyak File dengan map()

Gabungkan readr dengan purrr::map() untuk membaca dan menggabungkan baris dari beberapa file CSV dalam satu langkah. Pola ini penting untuk memproses pemisahan data bulanan atau triwulanan yang disimpan sebagai file terpisah.

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')

Pemeriksaan Singkat

Bagaimana cara memberi tahu read_csv() bahwa nilai 'N/A' dan '-99' harus diperlakukan sebagai nilai yang hilang (NA)?

Ringkasan: read_csv() dengan readr

Hal-hal penting tentang membaca file CSV dengan readr:

  • read_csv('file.csv') — membaca CSV, mengembalikan tibble, dan memperkirakan tipe kolom
  • col_types = 'idcl' atau cols(x=col_double()) — menentukan tipe secara eksplisit
  • skip=n — melewati baris tajuk atau metadata; n_max=n — membatasi jumlah baris yang dibaca
  • na = c('N/A','NULL') — memperlakukan string tambahan sebagai NA
  • locale(decimal_mark=',') — menangani format angka Eropa
  • show_col_types=FALSE — menyembunyikan informasi tipe dalam skrip
  • problems(df) — memeriksa kegagalan penguraian
  • Gabungkan dengan map_df(files, read_csv) untuk membaca banyak file
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)

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membaca File CSV dengan read_csv()” gratis?

Ya — teks lengkap “Membaca File CSV dengan read_csv()” 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 “Membaca File CSV dengan read_csv()”?

Impor file berbatas dengan opsi penebakan tipe kolom, pelewatan, dan pengodean. 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 1 dari 4.

Berapa lama pelajaran “Membaca File CSV dengan read_csv()” 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