10
votes

Comment importer les 100 dernières lignes en utilisant read.csv () dans r

Bonjour, j'ai un fichier énorme et je souhaite importer uniquement les 100 dernières lignes de ce fichier. Comment pouvons-nous faire cela en utilisant read.csv () ou toute alternative?


2 commentaires

Si vous êtes préoccupé par la vitesse, essayez Fread à partir de "Data.Table", puis extrayez les lignes dont vous avez besoin. De même, vous pouvez utiliser sqldf . Si vous êtes sur un système UNIX, vous avez accès à la commande queue qui pourrait être utile.


Je sais que nous pouvons utiliser des commandes spécifiques au système d'exploitation, mais je cherche un travail autour de RIA lui-même!


7 Réponses :


3
votes

Si vous êtes sur un système * NIX, vous préférez utiliser la commande Tail -N 100 pour prendre les 100 dernières lignes. Tout ce qui est implémenté dans R serait plus lent et potentiellement beaucoup plus lent est votre fichier est vraiment énorme.

Si vous utilisez Windows, vous voudrez peut-être jeter un coup d'œil sur cette question à la question .


2 commentaires

Ya c'est vrai. Donc, ce que vous indiquez, c'est qu'à utiliser une fonction Windows pour obtenir les 100 dernières lignes, mettez-la dans un fichier, puis importer dans R?


Plutôt. Vous pouvez faire chercher () et d'autres éléments "fantaisie" dans r mais bonne chance de trouver quelque chose qui est aussi rapide ou aussi simple.



1
votes

Vous pouvez utiliser le NRows code> et Ignorer code> arguments dans lis.csv code>. Par exemple. Si vous avez un fichier avec 10000 lignes et que vous souhaitez importer les 100 dernières lignes, vous pouvez essayer ceci:

read.csv("yourfile.csv",nrows=100,skip=9900)


1 commentaires

Merci pour la réponse.Mais le problème est que ma taille de fichier est si énorme que je ne peux pas déterminer le nombre total d'enregistrements de lignes.



23
votes

Le paquet R.Utils a une fonction appelée compte (). Vous pouvez faire:

l2keep <- 10
nL <- countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, skip=nL-l2keep)


0 commentaires

-1
votes

donner appropriés Skip PARAMÈTRE EN READ.CSV ()


1 commentaires

Cela ne répond pas à la question de l'OP. Ils veulent lire à partir d'un fichier seulement les 100 dernières lignes. Votre réponse suppose que le jeu de données a déjà été lu.



0
votes

La manière rapide et sale qui fonctionne pour moi - utilisez Fread pour lire des fichiers volumineux lors de la définition SELECT = 1 de sorte que seule la première colonne est lue. Ensuite, utilisez à nouveau Fread pour lire les données des lignes souhaitées. Fread est beaucoup plus rapide que lis.csv ou d'autres variantes similaires. Plus d'informations sur Fread vs lis.csv Ici: Raison de la vitesse de Fread dans data.Table package dans R


0 commentaires

2
votes

Amélioration de la réponse de @ LauratBoyer Si vous souhaitez inclure également les en-têtes:

# read headers only
column_names <- as.vector(t(read.csv("your.csv", header=FALSE, colClasses='character', nrows=1)))

# then last n lines
l2keep <- 10
nL <- R.utils::countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, col.names=column_names, skip=nL-l2keep)


0 commentaires

0
votes

lire le fichier, utilisez la fonction queue A <-Read.csv ('C: / ..') queue (a, 100l)


0 commentaires