我有幾個不同的txt文件具有相同的結構。現在我想用fread將它們讀入R,然後將它們合併成一個更大的數據集。使用data.table快速讀取和合並幾個文件(與fread)
## First put all file names into a list
library(data.table)
all.files <- list.files(path = "C:/Users",pattern = ".txt")
## Read data using fread
readdata <- function(fn){
dt_temp <- fread(fn, sep=",")
keycols <- c("ID", "date")
setkeyv(dt_temp,keycols) # Notice there's a "v" after setkey with multiple keys
return(dt_temp)
}
# then using
mylist <- lapply(all.files, readdata)
mydata <- do.call('rbind',mylist)
該代碼工作正常,但速度並不令人滿意。每個txt文件有1M個觀察值和12個字段。
如果我使用fread
來讀取單個文件,它很快。但是使用apply
,那麼速度非常慢,顯然比逐個讀取文件要花費很多時間。我想知道這裏出了什麼問題,速度增益有沒有提高?
我在plyr
包中試過llply
,沒有太多的速度增益。
另外,是否有任何語法data.table
實現垂直連接如rbind
和union
在sql
?
謝謝。
當然,這已經是修改的typo..I've。感謝西蒙! – Bigchao
刪除了評論和更新的答案。 –