J'ai un fichier CSV de taille ~ 1 Go, et comme mon ordinateur portable est de configuration de base, je ne parviens pas à ouvrir le fichier dans Excel ou R. Mais, par curiosité, j'aimerais connaître le nombre de lignes du fichier. fichier. Comment vais-je le faire, si je peux le faire du tout?
Pour Linux/Unix:
wc -l filename
Pour les fenêtres:
find /c /v "A String that is extremely unlikely to occur" filename
Option 1:
À travers une connexion de fichier, count.fields()
compte le nombre de champs par ligne du fichier en fonction de la valeur sep
(dont nous ne nous soucions pas ici). Donc, si nous prenons la longueur de ce résultat, nous devrions théoriquement nous retrouver avec le nombre de lignes (et de lignes) dans le fichier.
length(count.fields(filename))
Si vous avez une ligne d'en-tête, vous pouvez l'ignorer avec skip = 1
length(count.fields(filename, skip = 1))
Il existe d'autres arguments que vous pouvez adapter à vos besoins spécifiques, tels que le saut de lignes vides.
args(count.fields)
# function (file, sep = "", quote = "\"'", skip = 0, blank.lines.skip = TRUE,
# comment.char = "#")
# NULL
Voir help(count.fields)
pour plus.
Ce n'est pas si mal en ce qui concerne la vitesse. Je l'ai testé sur l'un de mes fichiers de baseball contenant 99846 lignes.
nrow(data.table::fread("Batting.csv"))
# [1] 99846
system.time({ l <- length(count.fields("Batting.csv", skip = 1)) })
# user system elapsed
# 0.528 0.000 0.503
l
# [1] 99846
file.info("Batting.csv")$size
# [1] 6153740
(Le plus efficace) Option 2: Une autre idée est d'utiliser data.table::fread()
pour lire la première colonne uniquement, puis de prendre le nombre de lignes. Ce serait très rapide.
system.time(nrow(fread("Batting.csv", select = 1L)))
# user system elapsed
# 0.063 0.000 0.063
Voici quelque chose que j'ai utilisé:
testcon <- file("xyzfile.csv",open="r")
readsizeof <- 20000
nooflines <- 0
( while((linesread <- length(readLines(testcon,readsizeof))) > 0 )
nooflines <- nooflines+linesread )
close(testcon)
nooflines
Consultez cet article pour plus: https://www.r-bloggers.com/easy-way-of-determining-number-of-linesrecords-in-a-given-large-file-using- r/
Estimez le nombre de lignes en fonction de la taille des 1000 premières lignes
size1000 <- sum(nchar(readLines(con = "dgrp2.tgeno", n = 1000)))
sizetotal <- file.size("dgrp2.tgeno")
1000 * sizetotal / size1000
Cela est généralement suffisant pour la plupart des applications, et beaucoup plus rapide pour les gros fichiers.