文件的批量处理

王致远

2018/10/11

今天我要面对之前一直想正面解决的一个问题:文件的批量操作。但之前对列表这种数据结构认识不深刻,不敢用也不会用,所以一直没能真正解决。

通过《Advanced R》里关于列表和泛函的操作,我现在已经有信心通过列表来进行文件的批量操作了。这篇文章仅展示批量操作的代码,并不运行。

批量读取

years <- c(2018,2017,2016,2015,2014)
gqall <- list()
for(i in 1:length(years)){
  path <- paste(c("D:\\jdnational",years[i],".csv"),collapse="")
  gqall[[i]] <- read.csv(path)
}
names(gqall) <- years

批量看维度

sapply(gqall, dim)

批量预处理

gqalls <- lapply(gqall, handle_gather_formd)
gqalls <- lapply(gqalls, guoqing_transform)

批量筛数据

usefulstation <- intersect(gqalls[[1]]$index,gqalls[[2]]$index)
gqalls <- lapply(gqalls,function(x) x[x[["index"]] %in% usefulstation,] )

抽取

gq2018s <- gqalls[[1]]
gq2017s <- gqalls[[2]]

合并列表计算结果

x <- lapply(gqalls, caculate_carsmean, "md")
y <- Reduce(merge_list(bywhat="md"),x)
names(y)[2:6] <- names(x)
y
y <- melt(y)