Mengurai File TSV dan Lebar Tetap
Gunakan read_tsv() dan read_fwf() untuk data bertab dan berlebar tetap.
Mengurai File TSV dan Lebar Tetap adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Selain CSV: Format File Lainnya
Tidak semua data tabular berbentuk CSV. File yang dipisahkan tab (TSV), file yang dibatasi tanda pipa, dan file berformat lebar tetap (FWF) umum digunakan dalam data pemerintah, sistem lama, dan basis data ilmiah. Paket readr menangani semua format ini dengan sintaks yang konsisten.
library(readr)
# readr's flat file readers:
# read_csv() - comma-separated
# read_csv2() - semicolon-separated (European)
# read_tsv() - tab-separated
# read_delim() - any delimiter
# read_fwf() - fixed-width format
# read_lines() - raw text, one line per element
cat('All readr functions return tibbles with the same interface!')read_tsv() — Nilai yang Dipisahkan Tab
read_tsv() membaca file yang dibatasi tab. Fungsi ini memiliki argumen yang sama seperti read_csv() — col_types, na, skip, dan sebagainya. TSV lebih disukai daripada CSV jika data mengandung koma, misalnya pada alamat atau deskripsi.
library(readr)
# Simulated TSV using \t as delimiter
tsv_data <- 'name\tscore\tcity
Alice Smith\t85\tNew York, NY
Bob Jones\t92\tLos Angeles, CA
Carol White\t78\tChicago, IL'
# Note: cities contain commas — TSV handles this cleanly
df <- read_tsv(tsv_data, show_col_types=FALSE)
print(df)read_delim() — Pembatas Apa Pun
read_delim(file, delim='|') menangani pembatas apa pun yang terdiri dari satu karakter. File yang dibatasi tanda pipa (|) umum digunakan di gudang data dan ekspor pemerintah karena tanda pipa jarang muncul di dalam data itu sendiri.
library(readr)
# Pipe-delimited data
pipe_data <- 'ID|Name|Department|Salary
1|Alice Smith|Engineering|95000
2|Bob Jones|Marketing|72000
3|Carol White|HR|65000'
df <- read_delim(pipe_data, delim='|', show_col_types=FALSE)
print(df)read_delim() untuk File Bertanda Titik Koma
File CSV Eropa sering menggunakan titik koma sebagai pembatas dan koma sebagai tanda desimal. read_csv2() adalah bentuk singkat dari read_delim(delim=';', locale=locale(decimal_mark=',')), atau Anda dapat mengonfigurasi read_delim() secara langsung.
library(readr)
# European-style: semicolon delimiter, comma decimal
european_data <- 'name;price;quantity
Widget;9,99;100
Gadget;24,50;50
Sprocket;4,75;200'
# Method 1: read_csv2() shortcut
df1 <- read_csv2(european_data, show_col_types=FALSE)
print(df1)
# Method 2: explicit read_delim
# read_delim(data, delim=';', locale=locale(decimal_mark=','))read_fwf() — Format Lebar Tetap
File lebar tetap tidak memiliki pembatas — kolom ditentukan berdasarkan posisi karakter. Format ini umum digunakan dalam ekspor komputer kerangka utama lama dan data pemerintah. Gunakan fwf_widths() untuk menentukan lebar kolom, atau fwf_cols() untuk menentukan posisi awal dan akhir.
library(readr)
# Fixed-width data (positions matter!)
fwf_data <- 'Alice 085NYC
Bob 092LA
Carol 078Chicago '
# Column widths: name=9, score=3, city=10
df <- read_fwf(
fwf_data,
col_positions = fwf_widths(
widths = c(9, 3, 10),
col_names = c('name','score','city')
),
show_col_types = FALSE
)
print(df)fwf_positions() untuk Kolom Awal/Akhir
fwf_positions(start, end, col_names) menentukan posisi awal dan akhir karakter secara tepat (dengan indeks dimulai dari 1). Cara ini tepat ketika lebar kolom bervariasi atau ketika Anda perlu melewati beberapa kolom dengan tidak menentukannya.
library(readr)
# Another fixed-width example using start/end positions
fwf_data <- '001ALICE 02024-01-15
002BOB 01 2024-02-20
003CAROL 03 2024-03-10'
df <- read_fwf(
fwf_data,
col_positions = fwf_positions(
start = c(1, 4, 11, 14),
end = c(3, 10, 12, 23),
col_names = c('id','name','score','date')
),
show_col_types = FALSE
)
print(df)fwf_empty() — Mendeteksi Lebar Secara Otomatis
fwf_empty(file, col_names) mencoba mendeteksi batas kolom secara otomatis berdasarkan celah spasi. Sediakan nama kolom secara terpisah. Fungsi ini paling baik digunakan untuk file FWF yang formatnya rapi dan memiliki jarak yang konsisten.
library(readr)
# Well-spaced fixed-width data
fwf_data <- 'name score grade
Alice 85 B
Bob 92 A
Carol 78 C
Dave 88 B'
# Auto-detect column positions from whitespace
df <- read_fwf(
fwf_data,
col_positions = fwf_empty(fwf_data, col_names=c('name','score','grade')),
show_col_types = FALSE
)
print(df)read_lines() — Penguraian Teks Mentah
read_lines(file) membaca file teks satu baris setiap kali dan mengembalikan vektor karakter. Ini adalah fungsi baca tingkat paling dasar — gunakan ketika Anda perlu melakukan prapemrosesan baris sebelum menguraikannya, misalnya menyaring komentar atau menangani format yang tidak konsisten.
library(readr)
# Read lines and filter manually
raw_text <- '# Comment line
# Another comment
name,score
Alice,85
Bob,92'
lines <- read_lines(raw_text)
print(lines)
# Filter out comment lines
clean_lines <- lines[!startsWith(lines, '#')]
df <- read_csv(paste(clean_lines, collapse='\n'), show_col_types=FALSE)
print(df)read_lines() untuk Pemeriksaan Bertahap
read_lines(file, n_max=10) menampilkan pratinjau hanya beberapa baris pertama dari file teks apa pun sebelum Anda melakukan pembacaan penuh. Ini berguna untuk mendiagnosis masalah pengodean, menemukan baris tajuk yang sebenarnya, atau mendeteksi jenis pembatas.
library(readr)
# Preview first few lines before reading
sample_file <- 'METADATA: version 1.2
DATE: 2024-01-15
---
id,name,value
1,Alice,100
2,Bob,200'
# Inspect to find where the data starts
preview <- read_lines(sample_file, n_max=4)
print(preview)
# From this we know: skip=3, then read as CSVMenangani Masalah Pengodean
Karakter non-ASCII (aksen dan aksara non-Latin) memerlukan penentuan pengodean yang tepat. Gunakan locale(encoding='latin1') atau locale(encoding='UTF-8') di dalam read_csv() atau read_delim(). Nilai bawaannya adalah UTF-8.
library(readr)
# Detect encoding of a file
# readr::guess_encoding('file.csv') # Returns likely encodings
# Specify encoding explicitly
# df <- read_csv('data_latin1.csv',
# locale = locale(encoding = 'latin1'))
# For UTF-8 with BOM (common in Windows exports):
# df <- read_csv('data_utf8bom.csv',
# locale = locale(encoding = 'UTF-8-BOM'))
cat('Encoding matters for accented chars: \xc3\xa9 (UTF-8 for e-acute)\n')
print(guess_encoding(chartr('\xe9','e','caf\xe9')))Memilih Fungsi Pembaca yang Tepat
Panduan singkat untuk memilih fungsi readr yang tepat:
- Koma →
read_csv() - Titik koma + desimal Eropa →
read_csv2() - Tab →
read_tsv() - Pembatas lainnya →
read_delim(delim='|') - Posisi tetap →
read_fwf() - Pemeriksaan mentah →
read_lines()
library(readr)
# Quick comparison of delimiters
csv_data <- 'a,b,c\n1,2,3'
tsv_data <- 'a\tb\tc\n1\t2\t3'
pipe_data <- 'a|b|c\n1|2|3'
read_csv(csv_data, show_col_types=FALSE)
read_tsv(tsv_data, show_col_types=FALSE)
read_delim(pipe_data, delim='|', show_col_types=FALSE)Pemeriksaan Singkat
Fungsi readr mana yang paling tepat untuk membaca file yang kolomnya ditentukan berdasarkan posisi karakter tetap (tanpa pembatas)?
Ringkasan: File TSV dan Lebar Tetap
Hal-hal penting tentang format file datar non-CSV:
read_tsv()— dipisahkan tab; paling sesuai jika data mengandung komaread_delim(delim='|')— pembatas satu karakter apa punread_csv2()— dipisahkan titik koma dengan tanda desimal Eroparead_fwf(fwf_widths(c(10,5,8)))— lebar tetap berdasarkan lebar kolomread_fwf(fwf_positions(start, end))— lebar tetap berdasarkan posisi tepatread_lines(file, n_max=10)— memeriksa baris mentah sebelum penguraian- Semua fungsi menggunakan argumen
col_types,na,skip, danlocale()yang sama
library(readr)
# Pipe-delimited with custom NA values
df <- read_delim(
'ID|Name|Score|City
1|Alice|85|NYC
2|Bob|N/A|N/A
3|Carol|78|Chicago',
delim = '|',
na = c('', 'NA', 'N/A'),
show_col_types = FALSE
)
print(df)
print(colSums(is.na(df)))Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengurai File TSV dan Lebar Tetap” gratis?
Ya — teks lengkap “Mengurai File TSV dan Lebar Tetap” 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 “Mengurai File TSV dan Lebar Tetap”?
Gunakan read_tsv() dan read_fwf() untuk data bertab dan berlebar tetap. 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 2 dari 4.
Berapa lama pelajaran “Mengurai File TSV dan Lebar Tetap” 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
- Membaca File CSV dengan read_csv()
- Mengurai File TSV dan Lebar Tetap
- Mengimpor File Excel dengan readxl
- Menulis Data ke Berbagai Format