Cách tốt nhất để lưu trữ dữ liệu để phân tích thống kê trong R [đã đóng]


12

Tôi đã sử dụng các tệp văn bản để lưu trữ dữ liệu của mình cho R mà không gặp vấn đề gì trong một thời gian. Nhưng đối với một dự án gần đây, kích thước của các tệp đang trở nên quá lớn đối với các tệp văn bản thô để xử lý. Cách thay thế đơn giản nhất là gì?


5
Làm thế nào để các tập tin văn bản trở nên quá lớn? Bạn có sợ sự toàn vẹn của họ? Không thể mở chúng trong một số phần mềm khác? Có phải họ quá chậm để tải? Quá lớn cho ổ cứng của bạn (máy tính xách tay?)?
Gala

3
+1 Quản lý dữ liệu khi các dự án phát triển là một vấn đề phổ biến trong phân tích dữ liệu (và hầu như không cụ thể R). Mối quan tâm cơ bản là với tính toàn vẹn dữ liệu thay vì kích thước tệp: đề xuất một số hình thức nén chỉ che khuất điều này hơn là giải quyết nó.
whuber

Trên một kích thước nhất định txt dường như không hoạt động. Tôi có thể thêm dữ liệu bổ sung vào tệp txt và tải nó vào R, nhưng dữ liệu bổ sung không có trong R. (Btw dữ liệu khá phong phú nên trong khi nén có thể giúp tôi một chút và tôi sẽ không đi xa được. nghi ngờ khi dự án của tôi phát triển, tôi sẽ lại gặp vấn đề tương tự.)
Toy Molto

Bạn cần cho chúng tôi biết thêm về dữ liệu của bạn, không có thứ gọi là "cách tốt nhất cho bất kỳ loại dữ liệu nào".
zx8754

Bạn có nghĩa là read.tablehoặc read.csvthất bại âm thầm? Bạn có chắc chắn rằng bạn không có một số tệp nằm xung quanh và một số lỗi mã hóa (đường dẫn sai, tên tệp sai, v.v.) không? Chỉ để sửa ý tưởng, bạn cũng có thể muốn cung cấp cho chúng tôi ý tưởng về số lượng biến và số lượng bản ghi bạn đang xử lý.
Gala

Câu trả lời:


10

Cách tiếp cận R tiêu chuẩn là sử dụng saveload. Nếu bạn chạy savetrên khung dữ liệu của mình sau khi nhập và chú thích nó, bạn có thể chỉ định compress=TRUEvà bạn sẽ ngạc nhiên về việc nén và loadthời gian nhanh . Điều này đặc biệt hiệu quả nếu kích thước đối tượng nhỏ hơn khoảng 400MB. Nếu không, hãy xem một số gợi ý ở trên hoặc ffgói mạnh mẽ trong R.

Các Hmiscgói có giấy gói nhỏ SaveLoadđể làm cho không đau ở trên thậm chí nhiều hơn:

mydata <- csv.get(...)  # Hmisc package, has several options
Save(mydata)   # writes mydata.rda to current working directory
....
Load(mydata)   # reads mydata.rda and creates mydata data frame

9

Hãy xem cơ sở dữ liệu SQLite3. Mỗi cơ sở dữ liệu là một tệp, vì vậy nó không yêu cầu thiết lập máy chủ cơ sở dữ liệu.

Để tạo cơ sở dữ liệu:

$ sqlite3 my_db.db3
> CREATE TABLE my_table ( col1 TEXT );

Để sử dụng với R, https://gist.github.com/lynaghk/1062939


+1 Sử dụng cơ sở dữ liệu thực tế là một bước tiến lớn theo đúng hướng.
whuber


Cảm ơn, tôi sẽ thử tuyến đường này. Tôi cũng đã xem MySQL, nhưng dường như là nhiều hơn tôi cần.
Đồ chơi Molto

4

Có một số tùy chọn chung.

  • Bạn có thể nén văn bản.
  • Bạn có thể đi nhị phân trên văn bản, không viết bằng ascii

Nén lớn là phụ thuộc dữ liệu.

Tôi đoán (và bạn không chỉ định nên tôi phải đoán) là bạn đang muốn lưu trữ dữ liệu giống như bảng tính trong một cái gì đó không phải là csv (được phân cách bằng dấu phẩy).

Một trong những định dạng yêu thích của tôi (tôi yêu MatLab) là hdf.

Dưới đây là thông tin liên quan đến R về HDF:

Nó là một định dạng lưu trữ dữ liệu siêu máy tính mật độ cao. Nó có thể rất nhanh và hiệu quả. Nó cũng (không ngạc nhiên) dày đặc hơn văn bản nén.


3

Các chức năng đọc tệp tiêu chuẩn trong R giờ đây sẽ tự động dễ dàng đọc các tệp được nén. Vì vậy, chỉ cần chạy nén gzip đơn giản trên dữ liệu của bạn và đọc như mọi khi, như thể đó là văn bản thuần túy.

read.table('myfile.gz')

Khéo léo! Tôi không biết điều đó. Cảm ơn bạn.
EngrStudent - Phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.