0Pricing
R Academy · Ders

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 CSV

Kodlama 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 iyisidir
  • read_delim(delim='|') — tek karakterden oluşan herhangi bir ayırıcı
  • read_csv2() — Avrupa ondalık işaretleriyle noktalı virgülle ayrılmış veriler
  • read_fwf(fwf_widths(c(10,5,8))) — sütun genişliklerine göre sabit genişlik
  • read_fwf(fwf_positions(start, end)) — tam konumlara göre sabit genişlik
  • read_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

  1. read_csv() ile CSV Dosyalarını Okuma
  2. TSV ve Sabit Genişlikta Dosyaları Ayrıştırma
  3. readxl ile Excel Dosyalarını İçe Aktarma
  4. Verileri Birden Fazla Biçimde Yazma
← R Academy Sayfasına Dön