pisz.csv dla dużych danych.tabela
Mam data.table
, który nie jest zbyt duży (2 GB), ale z jakiegoś powodu write.csv
zajmuje bardzo dużo czasu, aby go zapisać (nigdy nie skończyłem czekać) i wydaje się używać Tony pamięci RAM, aby to zrobić.
Próbowałem przekonwertować data.table
na data.frame
, chociaż to nie powinno nic zrobić, ponieważ data.table
rozszerza data.frame
. czy ktoś na to wpadł?
Co ważniejsze, jeśli zatrzymasz go za pomocą Ctrl-C , R wydaje się nie zwracać pamięci.
1 answers
Aktualizacja 08.04.2016:
fwrite
został niedawno dodany do danych.wersja rozwojowa pakietu table. Działa również równolegle(w domyśle).
# Install development version of data.table
install.packages("data.table",
repos = "https://Rdatatable.github.io/data.table", type = "source")
# Load package
library(data.table)
# Load data
data(USArrests)
# Write CSV
fwrite(USArrests, "USArrests_fwrite.csv")
Zgodnie ze szczegółowymi testami porównawczymi pokazanymi pod .tabela, fwrite
jest ~17x szybszy niż write.csv
tam (YMMV).
Aktualizacja 15.12.2015:
W przyszłości może istnieć Funkcja fwrite
w pakiecie data.table
, Zobacz: https://github.com/Rdatatable/data.table/issues/580 .
W tym wątku linkowany jest GIST, który zapewnia prototyp dla takiej funkcji przyspieszającej proces o współczynnik 2 (według autora, {25]}https://gist.github.com/oseiskar/15c4a3fd9b6ec5856c89).
ORYGINALNA ODPOWIEDŹ :
Miałem te same problemy (próbując napisać jeszcze większe pliki CSV) i zdecydowałem się w końcu na używanie plików CSV.
Polecam używać SQLite jak jest znacznie szybciej niż radzenie sobie z plikami CSV:
require("RSQLite")
# Set up database
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = "test.db")
# Load example data
data(USArrests)
# Write data "USArrests" in table "USArrests" in database "test.db"
dbWriteTable(con, "arrests", USArrests)
# Test if the data was correctly stored in the database, i.e.
# run an exemplary query on the newly created database
dbGetQuery(con, "SELECT * FROM arrests WHERE Murder > 10")
# row_names Murder Assault UrbanPop Rape
# 1 Alabama 13.2 236 58 21.2
# 2 Florida 15.4 335 80 31.9
# 3 Georgia 17.4 211 60 25.8
# 4 Illinois 10.4 249 83 24.0
# 5 Louisiana 15.4 249 66 22.2
# 6 Maryland 11.3 300 67 27.8
# 7 Michigan 12.1 255 74 35.1
# 8 Mississippi 16.1 259 44 17.1
# 9 Nevada 12.2 252 81 46.0
# 10 New Mexico 11.4 285 70 32.1
# 11 New York 11.1 254 86 26.1
# 12 North Carolina 13.0 337 45 16.1
# 13 South Carolina 14.4 279 48 22.5
# 14 Tennessee 13.2 188 59 26.9
# 15 Texas 12.7 201 80 25.5
# Close the connection to the database
dbDisconnect(con)
Aby uzyskać więcej informacji, zobacz http://cran.r-project.org/web/packages/RSQLite/RSQLite.pdf
Możesz również użyć oprogramowania typu http://sqliteadmin.orbmu2k.de / aby uzyskać dostęp do bazy danych i wyeksportować bazę danych do CSV itp.
--
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 11:56:59