Come leggere grandi set di dati in R [duplicato]
-
09-10-2019 - |
Domanda
Eventuali duplicati:
Rapidamente leggere tabelle molto grandi come dataframes in R
Ciao,
cercando di leggere un grande insieme di dati in R console visualizzata gli errori follwing:
data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE)
> data = data[complete.cases(data),]
> dataset<-data.frame(user_id=as.character(data[,1]),event_date= as.character(data[,2]),day_of_week=as.factor(data[,3]),distinct_events_a_count=as.numeric(as.character(data[,4])),total_events_a_count=as.numeric(as.character(data[,5])),events_a_duration=as.numeric(as.character(data[,6])),distinct_events_b_count=as.numeric(as.character(data[,7])),total_events_b=as.numeric(as.character(data[,8])),events_b_duration= as.numeric(as.character(data[,9])))
Error: cannot allocate vector of size 94.3 Mb
In addition: Warning messages:
1: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, :
NAs introduced by coercion
2: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, :
NAs introduced by coercion
3: In class(value) <- "data.frame" :
Reached total allocation of 3583Mb: see help(memory.size)
4: In class(value) <- "data.frame" :
Reached total allocation of 3583Mb: see help(memory.size)
Qualcuno sa come leggere grandi quantità di dati? La dimensione del UserDailyStats.csv è di circa 2 GB.
Soluzione
Certo:
- avere un computer più grande, in particolare più ram
- Esegui un 64-bit OS, vedi 1) qualcosa di più ram, ora che si può usare
- Leggi solo le colonne è necessario
- Leggi meno righe
- Leggi i dati in formato binario piuttosto che ri-analisi 2GB (che è potente inefficiente).
C'è anche un manuale per questo al < a href = "http://www.r-project.org" rel = "noreferrer"> sito R .
Altri suggerimenti
Si potrebbe provare a specificare il tipo di dati nella chiamata read.csv
utilizzando colClasses
.
data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE, colClasses=c("character","character","factor",rep("numeric",6)))
Anche se con un set di dati di queste dimensioni può ancora essere problematico e non v'è una grande quantità di memoria ancora disponibile per qualsiasi analisi si può decidere di fare. L'aggiunta di RAM e con elaborazione a 64 bit potrebbe fornire una maggiore flessibilità.
Se questa è uscita dalla console allora leggere i dati, ma non v'è problema con le trasformazioni.
Se si lavora in modo interattivo poi dopo read.csv
salvare i dati con save(data, file="data.RData")
, vicino R, eseguire esempio fresco, i dati di carico con load("data.RData")
, e vedere se sicuro.
Ma da questo i messaggi di errore che vedo che hai problemi con la conversione in modo si dovrebbe guardare a questo.