如何在R中自动化处理.dat食品消费数据:标准化行数与添加时间戳
求助:处理大体积分钟级食品消费数据集的内存优化方案
我现在有个文件夹,里面装着1900个.dat格式的数据集,都是2012-2017年的单日分钟级食品消费数据,文件名都是按日期命名的,举个例子:FC-20120204.dat、FC-20120205.dat、FC-20120206.dat。
每个标准的数据集应该有1500列(对应1500个变量)和1440行(对应一天的每一分钟数据),但目前遇到了几个问题:
- 大量数据集不完整,行数只有899、1101这类非1440的数值;
- 数据本身不带日期/时间戳,很容易混淆不同文件的记录;
- 最终只需要保留时间戳和第25列(核心数据对应原文件的C列);
- 需要把所有处理后的数据整理成连续格式,最终通过
rbind合并。
我原本打算先把所有数据集标准化为1440行,之前在Stack Overflow上参考了一个方案,试了下面的代码:
files<-list.files(pattern="FC") result <- sapply(files, function(file) { temp <- read.csv(file) # 可能需要根据表头做调整 temp[,25] })
但整个数据集总大小大概有9GB,而我的电脑RAM只有8GB,运行的时候R Studio直接崩溃了,推测list.files搭配sapply/lapply这种一次性加载处理的方式,根本不适合这么大的数据量。
我现在初步的思路是:逐个导入文件,先给它添加时间戳,然后标准化行数到1440行,再筛选出目标列,之后保存成新的小文件,最后再合并这些处理后的文件。不过想请教有没有更简便高效的处理方式?
补充说明:我准备了3个示例数据集,方便大家参考。
内容的提问来源于stack exchange,提问作者MT32
相关产品推荐
相关产品推荐

