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? P>
7 Réponses :
Si vous êtes sur un système * NIX, vous préférez utiliser la commande Si vous utilisez Windows, vous voudrez peut-être jeter un coup d'œil sur cette question à la question . p> Tail -N 100 code> 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. P>
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 () code> et d'autres éléments "fantaisie" dans r mais bonne chance de trouver quelque chose qui est aussi rapide ou aussi simple.
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)
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.
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)
donner appropriés
Cela ne répond pas à la question de l'OP. Ils veulent lire à partir d'un fichier i> seulement les 100 dernières lignes. Votre réponse suppose que le jeu de données a déjà été lu.
La manière rapide et sale qui fonctionne pour moi - utilisez Fread code> pour lire des fichiers volumineux lors de la définition SELECT = 1 code> de sorte que seule la première colonne est lue. Ensuite, utilisez à nouveau Fread code> pour lire les données des lignes souhaitées. Fread code> est beaucoup plus rapide que lis.csv code> ou d'autres variantes similaires. Plus d'informations sur Fread code> vs lis.csv code> Ici: Raison de la vitesse de Fread dans data.Table package dans R P>
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)
lire le fichier, utilisez la fonction queue em> A <-Read.csv ('C: / ..') queue (a, 100l) p>
Si vous êtes préoccupé par la vitesse, essayez
Fread code> à partir de "Data.Table", puis extrayez les lignes dont vous avez besoin. De même, vous pouvez utilisersqldf code>. Si vous êtes sur un système UNIX, vous avez accès à la commandequeue code> 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!