Analyser des fichiers TSV et à largeur fixe
Utilisez read_tsv() et read_fwf() pour traiter des données séparées par tabulations ou à largeur fixe.
Analyser des fichiers TSV et à largeur fixe est une leçon R Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage R Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours R Academy comprend 4 leçons au total.
Au-delà du CSV : autres formats de fichiers
Toutes les données tabulaires ne sont pas au format CSV. Les fichiers séparés par des tabulations (TSV), les fichiers séparés par des barres verticales et les fichiers à largeur fixe (FWF) sont courants dans les données gouvernementales, les anciens systèmes et les bases de données scientifiques. Le package readr prend en charge tous ces formats avec une syntaxe cohérente.
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() — Valeurs séparées par des tabulations
read_tsv() lit les fichiers dont les champs sont séparés par des tabulations. Il accepte les mêmes arguments que read_csv() — col_types, na, skip, etc. Le format TSV est préférable au CSV lorsque les données contiennent des virgules (adresses, descriptions).
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() — N’importe quel séparateur
read_delim(file, delim='|') prend en charge tout séparateur constitué d’un seul caractère. Les fichiers séparés par des barres verticales (|) sont courants dans les entrepôts de données et les exportations gouvernementales, car les barres verticales apparaissent rarement dans les données elles-mêmes.
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() pour les fichiers séparés par des points-virgules
Les fichiers CSV européens utilisent souvent des points-virgules comme séparateurs et des virgules comme séparateurs décimaux. read_csv2() est un raccourci pour read_delim(delim=';', locale=locale(decimal_mark=',')), mais vous pouvez aussi configurer directement read_delim().
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 à largeur fixe
Les fichiers à largeur fixe n’ont pas de séparateurs : les colonnes sont identifiées par leur position dans la chaîne de caractères. Ce format est courant dans les exportations d’anciens systèmes centraux et les données gouvernementales. Utilisez fwf_widths() pour indiquer la largeur des colonnes, ou fwf_cols() pour leurs positions de début et de fin.
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() pour les colonnes de début et de fin
fwf_positions(start, end, col_names) indique les positions exactes de début et de fin des caractères (indexées à partir de 1). Cette méthode est précise lorsque la largeur des colonnes varie ou lorsque vous devez ignorer certaines colonnes en ne les spécifiant pas.
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() — Détecter automatiquement la largeur
fwf_empty(file, col_names) tente de détecter automatiquement les limites des colonnes en fonction des espaces qui les séparent. Fournissez séparément les noms des colonnes. Cette fonction donne de meilleurs résultats avec des fichiers FWF bien formatés et à espacement régulier.
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() — Analyse de texte brut
read_lines(file) lit un fichier texte ligne par ligne et renvoie un vecteur de caractères. Il s’agit de la fonction de lecture de plus bas niveau : utilisez-la lorsque vous devez prétraiter les lignes avant l’analyse (par exemple, filtrer les commentaires ou gérer des formats incohérents).
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() pour une inspection progressive
read_lines(file, n_max=10) prévisualise uniquement les premières lignes d’un fichier texte avant de lancer une lecture complète. Cela est utile pour diagnostiquer les problèmes d’encodage, trouver la véritable ligne d’en-tête ou détecter le type de séparateur.
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 CSVGérer les problèmes d’encodage
Les caractères non ASCII (accents, écritures non latines) nécessitent de spécifier l’encodage correct. Utilisez locale(encoding='latin1') ou locale(encoding='UTF-8') dans read_csv() ou read_delim(). L’encodage par défaut est 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')))Choisir la fonction de lecture appropriée
Guide rapide pour choisir la fonction readr appropriée :
- Virgules →
read_csv() - Points-virgules et décimales européennes →
read_csv2() - Tabulations →
read_tsv() - Autres séparateurs →
read_delim(delim='|') - Positions fixes →
read_fwf() - Inspection du texte brut →
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)Vérification rapide
Quelle fonction readr convient le mieux pour lire un fichier dont les colonnes sont définies par des positions fixes de caractères (sans séparateurs) ?
Récapitulatif : fichiers TSV et à largeur fixe
Points essentiels à retenir sur les formats de fichiers plats autres que CSV :
read_tsv()— séparé par des tabulations ; idéal lorsque les données contiennent des virgulesread_delim(delim='|')— n’importe quel séparateur à un seul caractèreread_csv2()— séparé par des points-virgules avec des séparateurs décimaux européensread_fwf(fwf_widths(c(10,5,8)))— largeur fixe définie par la largeur des colonnesread_fwf(fwf_positions(start, end))— largeur fixe définie par les positions exactesread_lines(file, n_max=10)— inspecte les lignes brutes avant l’analyse- Toutes les fonctions partagent les mêmes arguments
col_types,na,skipetlocale()
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)))Questions Fréquemment Posées
La leçon « Analyser des fichiers TSV et à largeur fixe » est-elle gratuite ?
Oui — le texte complet de « Analyser des fichiers TSV et à largeur fixe » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours R Academy, passe à CoddyKit PRO. Le cours R Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Analyser des fichiers TSV et à largeur fixe » ?
Utilisez read_tsv() et read_fwf() pour traiter des données séparées par tabulations ou à largeur fixe. Tu pratiques R Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer R Academy ?
Aucune expérience préalable n'est requise. R Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Analyser des fichiers TSV et à largeur fixe » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon R Academy ?
Oui. Chaque leçon R Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des fichiers CSV avec read_csv()
- Analyser des fichiers TSV et à largeur fixe
- Importer des fichiers Excel avec readxl
- Écrire des données dans plusieurs formats