TSV ve Sabit Genişlikta Dosyaları Ayrıştırma
Sekmeyle ayrılmış ve sabit genişlikli veriler için read_tsv() ve read_fwf() kullanın.
TSV ve Sabit Genişlikta Dosyaları Ayrıştırma, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
CSV'nin Ötesi: Diğer Dosya Biçimleri
Tüm tablo biçimindeki veriler CSV olarak gelmez. Sekmeyle ayrılmış dosyalar (TSV), dikey çizgiyle ayrılmış dosyalar ve sabit genişlikli biçim (FWF) dosyaları kamu verilerinde, eski sistemlerde ve bilimsel veritabanlarında yaygındır. readr paketi bunların tümünü tutarlı bir söz dizimiyle işler.
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() — Sekmeyle Ayrılmış Değerler
read_tsv(), sekmeyle ayrılmış dosyaları okur. read_csv() ile aynı bağımsız değişkenlere sahiptir — col_types, na, skip vb. Veriler virgül içerdiğinde (adresler, açıklamalar) TSV, CSV'ye tercih edilir.
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() — Herhangi Bir Ayırıcı
read_delim(file, delim='|'), tek karakterden oluşan herhangi bir ayırıcıyı işler. Dikey çizgiyle ayrılmış dosyalar (|), dikey çizgiler verilerin içinde nadiren bulunduğu için veri ambarlarında ve kamuya yapılan dışa aktarımlarda yaygındır.
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)Noktalı Virgülle Ayrılmış Dosyalar için read_delim()
Avrupa CSV dosyalarında ayırıcı olarak genellikle noktalı virgül, ondalık işareti olarak da virgül kullanılır. read_csv2(), read_delim(delim=';', locale=locale(decimal_mark=',')) çağrısının kısa biçimidir; isterseniz read_delim() işlevini doğrudan da yapılandırabilirsiniz.
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() — Sabit Genişlikli Biçim
Sabit genişlikli dosyalarda ayırıcı bulunmaz — sütunlar karakter konumlarıyla belirlenir. Eski ana bilgisayar dışa aktarımlarında ve kamu verilerinde yaygındır. Sütun genişliklerini belirtmek için fwf_widths(), başlangıç/bitiş konumları için fwf_cols() kullanın.
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)Başlangıç/Bitiş Sütunları için fwf_positions()
fwf_positions(start, end, col_names), karakterlerin tam başlangıç ve bitiş konumlarını (1 tabanlı) belirtir. Sütun genişlikleri değiştiğinde veya bazı sütunları belirtmeyerek atlamanız gerektiğinde bu yöntem kesin sonuç verir.
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() — Genişliği Otomatik Algılama
fwf_empty(file, col_names), boşluk aralıklarına göre sütun sınırlarını otomatik olarak algılamaya çalışır. Sütun adlarını ayrıca sağlayın. Tutarlı aralıklara sahip, düzgün biçimlendirilmiş FWF dosyalarında en iyi sonucu verir.
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() — Ham Metin Ayrıştırma
read_lines(file), bir metin dosyasını satır satır okur ve bir karakter vektörü döndürür. Bu, en düşük düzeyli okuma işlevidir — ayrıştırmadan önce satırları ön işleme tabi tutmanız gerektiğinde kullanın (ör. açıklamaları filtrelemek veya tutarsız biçimleri işlemek için).
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)Artımlı İnceleme için read_lines()
read_lines(file, n_max=10), dosyanın tamamını okumaya başlamadan önce herhangi bir metin dosyasının yalnızca ilk birkaç satırını önizler. Bu yöntem kodlama sorunlarını tanılamak, gerçek başlık satırını bulmak veya ayırıcı türünü belirlemek için kullanışlıdır.
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 CSVKodlama Sorunlarını İşleme
ASCII dışı karakterler (aksan işaretleri, Latin alfabesi dışındaki yazı sistemleri) doğru kodlamanın belirtilmesini gerektirir. read_csv() veya read_delim() içinde locale(encoding='latin1') ya da locale(encoding='UTF-8') kullanın. Varsayılan UTF-8'dir.
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')))Doğru Okuyucuyu Seçme
Doğru readr işlevini seçmek için hızlı rehber:
- Virgüller →
read_csv() - Noktalı virgüller + Avrupa ondalık biçimleri →
read_csv2() - Sekmeler →
read_tsv() - Diğer ayırıcılar →
read_delim(delim='|') - Sabit konumlar →
read_fwf() - Ham inceleme →
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)Kısa Kontrol
Sütunların sabit karakter konumlarıyla tanımlandığı (ayırıcıların bulunmadığı) bir dosyayı okumak için hangi readr işlevi en iyi seçimdir?
Özet: TSV ve Sabit Genişlikli Dosyalar
CSV dışındaki düz dosya biçimleriyle ilgili temel noktalar:
read_tsv()— sekmeyle ayrılmıştır; veriler virgül içerdiğinde en iyisidirread_delim(delim='|')— tek karakterden oluşan herhangi bir ayırıcıread_csv2()— Avrupa ondalık işaretleriyle noktalı virgülle ayrılmış verilerread_fwf(fwf_widths(c(10,5,8)))— sütun genişliklerine göre sabit genişlikread_fwf(fwf_positions(start, end))— tam konumlara göre sabit genişlikread_lines(file, n_max=10)— ayrıştırmadan önce ham satırları inceleme- Tüm işlevler aynı
col_types,na,skip,locale()bağımsız değişkenlerini paylaşır
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)))Sıkça Sorulan Sorular
“TSV ve Sabit Genişlikta Dosyaları Ayrıştırma” dersi ücretsiz mi?
Evet — “TSV ve Sabit Genişlikta Dosyaları Ayrıştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“TSV ve Sabit Genişlikta Dosyaları Ayrıştırma” dersinde ne öğreneceğim?
Sekmeyle ayrılmış ve sabit genişlikli veriler için read_tsv() ve read_fwf() kullanın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“TSV ve Sabit Genişlikta Dosyaları Ayrıştırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- read_csv() ile CSV Dosyalarını Okuma
- TSV ve Sabit Genişlikta Dosyaları Ayrıştırma
- readxl ile Excel Dosyalarını İçe Aktarma
- Verileri Birden Fazla Biçimde Yazma