Questão:
Como ler um grande conjunto de dados em R
niko
2010-10-19 17:00:38 UTC
view on stackexchange narkive permalink

tentando ler um grande conjunto de dados em R, o console exibiu os seguintes erros:

  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 (dados [, 2]), day_of_week = as.factor (data [, 3]), different_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])), different_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]))) Erro: não é possível alocar vetor de tamanho 94,3 Mb; Além disso: Mensagens de aviso: 1: Em data.frame ( user_msisdn = as.character (data [, 1]), calls_date = as.character (data [,: NAs introduzidos por coercion2: In data.frame (user_msisdn = as.character (data [, 1]), calls_date = as. personagem (da ta [,: NAs introduzidos por coerção3: In class (value) <- "data.frame": Alocação total alcançada de 3583Mb: consulte a ajuda (memory.size) 4: In class (value) <- "data.frame": Atingiu a alocação total de 3583 MB: veja a ajuda (memory.size)  

Alguém sabe ler grandes conjuntos de dados? O tamanho de UserDailyStats.csv é de aproximadamente 2 GB.

Por que você insiste em fazer crossposting aqui e no SO?
Considerando que você postou sem vergonha, permita-me encaminhá-lo também descaradamente para [minha resposta à sua pergunta idêntica no StackOverlow] (http://stackoverflow.com/questions/3968073/how-to-read-large-dataset-in -r)
-1; Não precisa ser amargo.
Cinco respostas:
Shane
2010-10-19 18:09:51 UTC
view on stackexchange narkive permalink

Duas coisas básicas:

  1. Essa reclamação aborda toda a memória na sessão R, não apenas o objeto que você está carregando. E a menos que você esteja usando algo como ff , tudo em sua sessão está na memória.
  2. Um Windows, você precisa especificar quanta memória pode ser usada por R. veja help (memory.limit) . Mesmo que você esteja usando 64 bits, ele não usará por padrão toda a sua memória disponível.

Caso contrário, você pode considerar o uso de bigmemory para lidar com dados maiores conjuntos de dados se ainda for um problema. Algumas fontes relevantes:

Como sugestão final, você pode tentar chamar gc () para liberar memória antes de executar seu comando, embora, em princípio, R faça isso automaticamente conforme necessário.

NPE
2010-10-19 18:02:15 UTC
view on stackexchange narkive permalink

Em qual plataforma você está executando o R? Quanta memória física e virtual a máquina tem?

Além disso, você pode achar o seguinte relevante: http://stat.ethz.ch/R-manual/R-devel/library/ base / html / Memory-limits.html

Estou executando o Windows 7 de 64 bits em Quad CPU 2,67 GHz, 4 GB de RAM
Manuel Ramón
2010-10-19 21:00:59 UTC
view on stackexchange narkive permalink

Concordo totalmente com a resposta de Dirk. Uma sugestão. Achei muito útil o uso de linguagens de programação como AWK ou outras ao avaliar grandes bancos de dados. Então, consegui filtrar os dados que queria incluir em minha análise, reduzindo o tamanho final do conjunto de dados.

Além disso, em seu código você está duplicando o mesmo conjunto de dados duas vezes (dados e conjunto de dados). Se você quiser definir suas variáveis ​​como fator, numérico, etc, você pode usar a opção colClasses na função read.table.

ars
2010-10-19 21:35:04 UTC
view on stackexchange narkive permalink

Como você está no Windows de 64 bits, certifique-se de que instalou e está executando a versão de 64 bits do R para Windows. Em seguida, siga as instruções na página de Gary King:

Cacofonix
2013-01-09 17:25:55 UTC
view on stackexchange narkive permalink

Você sempre pode usar o pacote filehash que despeja o grande conjunto de dados no disco ao invés da memória do sistema. Você precisa estar preparado para lidar com a compensação devido aos tempos de leitura lenta do HDD.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 2.0 sob a qual é distribuído.
Loading...