我有一個非常大的DAT文件(16 GB)。它包含一些我們所說的1000個客戶的信息。該數據按如下排序,第一列代表客戶ID:從一個非常大的文件中提取和存儲數據R
9909814 246766 0 31/07/2012 7:00 0.03 0 0 0 0
8211675 262537 0 8/04/2013 3:00 0.52 0 0 0 0
但是,客戶的數據不是以有組織的方式存儲的。所以,我想提取每個客戶的數據並將其存儲在單獨的文件中。 (我有一個包含客戶ID的文件。)
對於只有一個客戶,我編寫了以下代碼,可以搜索文件並提取數據。不過,我的問題是如何,當我讀這個大文件到R.
con<-file('D:/CD_INTERVAL_READING.DAT')
open(con)
n=20
nk=100000
B=9909814 #customer ID for customer no.1
customer1 <- read.table(con, sep=",", nrow=1)
for (i in 1:n) {
conn <- read.table(con,sep=",",skip=(i-1)*nk, nrow=nk)
## extracts just those rows that belong to a specific customer ID
temp1 <-conn[conn$V1==B,]
customer1 <-rbind(customer1,temp1)
}
customer1 <- customer1 [-1,]
library(xlsx)
write.xlsx(customer1, "D:/customer1.xlsx")
你是否在有限內存的計算機上執行此操作?另外,你有沒有考慮過一次讀取文件塊?你可以閱讀更多關於[這裏](https://rstudio-pubs-static.s3.amazonaws.com/72295_692737b667614d369bd87cb0f51c9a4b.html) – Megatron
謝謝,我可以使用uni工具進行快速處理。實際上,也許,我的主要問題有點簡單。我的意思是我不知道如何爲每個客戶定義一個文件。我需要例如定義名爲customer1,customer2等的文件並將數據寫入它們。 – Rlearner
每一行都是客戶?對於每個客戶,你想寫一個新的文件? –