Ich habe eine CSV-Datei mit einer Größe von ~ 1 GB, und da mein Laptop eine grundlegende Konfiguration hat, kann ich die Datei nicht in Excel oder R öffnen. Aber aus Neugierde möchte ich die Anzahl der Zeilen im Datei. Wie soll ich das machen, wenn ich überhaupt kann?
Für Linux/Unix:
wc -l filename
Für Windows:
find /c /v "A String that is extremely unlikely to occur" filename
Option 1:
Über eine Dateiverbindung zählt count.fields()
die Anzahl der Felder pro Zeile der Datei basierend auf einem sep
-Wert (der uns hier nicht wichtig ist). Wenn wir uns also die Länge dieses Ergebnisses nehmen, sollten wir theoretisch die Anzahl der Zeilen (und Zeilen) in der Datei erhalten.
length(count.fields(filename))
Wenn Sie eine Kopfzeile haben, können Sie diese mit skip = 1
überspringen.
length(count.fields(filename, skip = 1))
Es gibt andere Argumente, die Sie an Ihre speziellen Bedürfnisse anpassen können, z. B. das Überspringen von Leerzeilen.
args(count.fields)
# function (file, sep = "", quote = "\"'", skip = 0, blank.lines.skip = TRUE,
# comment.char = "#")
# NULL
Siehe help(count.fields)
für mehr.
Es ist nicht so schlimm, was die Geschwindigkeit angeht. Ich habe es in einer meiner Baseball-Dateien getestet, die 99846 Zeilen enthält.
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
(Je effizienter) Option 2: Eine andere Idee ist, data.table::fread()
nur zum Lesen der ersten Spalte zu verwenden und dann die Anzahl der Zeilen zu übernehmen. Das wäre sehr schnell.
system.time(nrow(fread("Batting.csv", select = 1L)))
# user system elapsed
# 0.063 0.000 0.063
Hier ist etwas, was ich verwendet habe:
testcon <- file("xyzfile.csv",open="r")
readsizeof <- 20000
nooflines <- 0
( while((linesread <- length(readLines(testcon,readsizeof))) > 0 )
nooflines <- nooflines+linesread )
close(testcon)
nooflines
In diesem Beitrag finden Sie weitere Informationen: https://www.r-bloggers.com/easy-way-of-determining-number-of-linesrecords-in-a-given-large-file- using- r/
Schätzen Sie die Anzahl der Zeilen basierend auf der Größe der ersten 1000 Zeilen
size1000 <- sum(nchar(readLines(con = "dgrp2.tgeno", n = 1000)))
sizetotal <- file.size("dgrp2.tgeno")
1000 * sizetotal / size1000
Dies ist normalerweise für die meisten Zwecke gut genug - und für große Dateien viel schneller.