6 votos

Como leer la gran base de datos en R

tratando de leer una gran base de datos en la consola muestra los errores siguientes:

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)

¿Alguien sabe como leer grandes conjuntos de datos? El tamaño del UserDailyStats.csv es de aproximadamente 2GB.

10voto

Jon Galloway Puntos 28243

Dos cosas básicas:

  1. Que denuncia las direcciones de todos los de la memoria en la sesión de R, no sólo el objeto que se está cargando. Y a menos que usted está usando algo como ff, todo en su período de sesiones en la memoria.
  2. Uno de Windows, es necesario especificar la cantidad de memoria que puede ser utilizado por R. echar un vistazo a help(memory.limit). A pesar de que está utilizando 64 bits, no predeterminado para utilizar toda la memoria disponible.

De lo contrario, usted puede considerar el uso de bigmemory para manejar grandes conjuntos de datos si el problema persiste. Algunas fuentes relevantes:

Como sugerencia final, puede intentar llamar a gc() para liberar memoria antes de ejecutar el comando, aunque en principio R hará esto automáticamente a medida que se necesita.

2voto

KP. Puntos 1177

¿Qué plataforma se ejecuta R en? ¿La cantidad física y memoria virtual tiene la máquina?

También, puede encontrar los siguientes relevantes: http://stat.ethz.ch/R-manual/R-devel/library/base/html/Memory-limits.html

2voto

YequalsX Puntos 320

I, m, totalmente de acuerdo con la respuesta de Dirk. Una sugerencia. He encontrado muy útil el uso de lenguajes de programación tales como AWK u otros valoración de grandes bases de datos. Así, fui capaz de filtrar los datos que quería incluir en mi análisis, reduciendo el tamaño final del conjunto de datos.

Por otra parte, en el código está duplicando el mismo conjunto de datos dos veces (datos y dataset). Si quieres definir tus variables como factor numérico, etcetera, puede usar en la función read.table colClasses opción.

2voto

Omar Kooheji Puntos 384

Ya que estás en Windows de 64 bits, asegúrese de que ha instalado y está ejecutando la versión de 64 bits de R para Windows. A continuación, siga las instrucciones en la página de Gary King:

1voto

Usted puede utilizar el filehash paquete que vuelca la gran base de datos en el disco en lugar de la memoria del sistema. Usted necesita estar preparado para afrontar el compromiso aunque, debido al lento Lee HDD veces.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X