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.

È stato utile?

Soluzione

Certo:

  1. avere un computer più grande, in particolare più ram
  2. Esegui un 64-bit OS, vedi 1) qualcosa di più ram, ora che si può usare
  3. Leggi solo le colonne è necessario
  4. Leggi meno righe
  5. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top